from_csv دالة

إرجاع قيمة البنية باستخدام csvStr و schema .

بناء الجملة

from_csv(csvStr, schema [, options])

الوسيطات

  • csvStrتعبير STRING يحدد صف بيانات CSV.
  • schemaسلسلة حرفية أو استدعاء schema.
  • optionsسلسلة MAP < اختيارية، سلسلة > حرفية تحديد التوجيهات.

المرتجعات

STRUCT مع أسماء الحقول وأنواع مطابقة لتعريف المخطط.

csvStr يجب أن تكون شكلت بشكل جيد فيما يتعلق schema و options . schema يجب تعريفها على أنها اسم عمود مفصول بفاصلة وأزواج نوع بيانات كما هو مستخدم في على سبيل المثال CREATE TABLE .

options، إذا تم توفيرها، يمكن أن يكون أي مما يلي:

  • sep,(افتراضي): تعيين فاصل لكل حقل وقيمة. يمكن أن يكون هذا الفاصل حرف واحد أو أكثر.
  • encoding (UTF-8 الافتراضي): فك ترميز ملفات CSV حسب نوع الترميز المحدد.
  • quote"(افتراضي): تعيين حرف واحد يستخدم للهروب من القيم المقتبسة حيث يمكن أن يكون الفاصل جزءا من القيمة. إذا كنت ترغب في إيقاف تشغيل عروض الأسعار، تحتاج إلى تعيين لا فارغة ولكن سلسلة فارغة. يختلف هذا السلوك عن com.databricks.spark.csv .
  • escape\(افتراضي): تعيين حرف واحد يستخدم للهروب من علامات الاقتباس داخل قيمة مقتبسة بالفعل.
  • charToEscapeQuoteEscaping (افتراضي escape\0 أو): تعيين حرف واحد يستخدم للهروب من حرف الاقتباس. القيمة الافتراضية هي حرف الهروب عندما escapequote والأحرف مختلفة، \0 وإلا.
  • comment (سلسلة فارغة افتراضية): تعيين حرف واحد يستخدم لتخطي الأسطر بدءا من هذا الحرف. يتم تعطيله في الوضع الافتراضي.
  • رأس false (افتراضي): يستخدم السطر الأول كأسماء أعمدة.
  • enforceSchematrue(افتراضي): إذا تم تعيينه إلى true، يتم تطبيق المخطط المحدد أو المستدل عليه إجباريا على ملفات مصدر البيانات، ويتم تجاهل الرؤوس في ملفات CSV. إذا تم تعيين الخيار إلى false، يتم التحقق من صحة المخطط مقابل كافة الرؤوس في ملفات CSV في الحالة عند تعيين خيار الرأس إلى true. يتم التحقق من أسماء الحقول في المخطط وأسماء الأعمدة في رؤوس CSV حسب مواقعها مع الأخذ في الاعتبار spark.sql.caseSensitive . على الرغم من أن القيمة الافتراضية صحيحة، فمن المستحسن تعطيل خيار enforceSchema لتجنب النتائج غير الصحيحة.
  • inferSchemafalse(افتراضي): يستنتج مخطط الإدخال تلقائيا من البيانات. يتطلب تمريرة إضافية واحدة على البيانات.
  • samplingRatio (الافتراضي 1.0): يعرف كسر الصفوف المستخدمة للاستدلال المخطط.
  • ignoreLeadingWhiteSpacefalse(افتراضي): يجب تخطي علامة تشير إلى ما إذا كان يجب تخطي المسافات البيضاء الرائدة من القيم التي تتم قراءتها أم لا.
  • ignoreTrailingWhiteSpacefalse(افتراضي): يجب تخطي علامة تشير إلى ما إذا كان يجب تخطي المسافات البيضاء الزائدة من القيم التي تتم قراءتها أم لا.
  • nullValue (سلسلة فارغة افتراضية): تعيين تمثيل السلسلة لقيمة فارغة.
  • emptyValue (سلسلة فارغة افتراضية): تعيين تمثيل السلسلة لقيمة فارغة.
  • nanValueNaN(افتراضي): تعيين تمثيل السلسلة لقيمة غير رقمية.
  • positiveInfInf(افتراضي): تعيين تمثيل السلسلة لقيمة ما لا نهاية موجبة.
  • negativeInf-Inf)(الافتراضي: تعيين تمثيل السلسلة لقيمة سالبة لا متناهية.
  • dateFormatyyyy-MM-dd(افتراضي): تعيين السلسلة التي تشير إلى تنسيق تاريخ. تتبع تنسيقات التاريخ المخصص التنسيقات في أنماط Datetime. ينطبق هذا على نوع التاريخ.
  • timestampFormatyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX](افتراضي): تعيين السلسلة التي تشير إلى تنسيق الطابع الزمني. تتبع تنسيقات التاريخ المخصص التنسيقات في أنماط Datetime. ينطبق هذا على نوع الطابع الزمني.
  • maxColumns20480(افتراضي): يحدد الحد الثابت لعدد الأعمدة التي يمكن أن يكون للسجل.
  • maxCharsPerColumn (الافتراضي -1): يحدد الحد الأقصى لعدد الأحرف المسموح بها لأي قيمة محددة يتم قراءتها. افتراضيا، هو -1 معنى طول غير محدود
  • unescapedQuoteHandlingSTOP_AT_DELIMITER(افتراضي): يعرف كيفية معالجة محلل CSV للقيم مع علامات الاقتباس غير المكفولة.
    • STOP_AT_CLOSING_QUOTEإذا تم العثور على علامات الاقتباس unescaped في الإدخال، تتراكم حرف اقتباس والمتابعة تحليل القيمة كقيمة مقتبس، حتى يتم العثور على اقتباس إقفال.
    • BACK_TO_DELIMITERإذا تم العثور على علامات الاقتباس unescaped في الإدخال، خذ بعين الاعتبار القيمة كقيمة غير مقتبس. وهذا سيجعل المحلل اللغوي تتراكم كافة الأحرف من القيمة الحالية تحليل حتى يتم العثور على محدد. إذا تم العثور على محدد في القيمة، سوف يستمر المحلل اللغوي تراكم الأحرف من الإدخال حتى يتم العثور على محدد أو نهاية سطر.
    • STOP_AT_DELIMITERإذا تم العثور على علامات الاقتباس unescaped في الإدخال، خذ بعين الاعتبار القيمة كقيمة غير مقتبس. وهذا سيجعل المحلل اللغوي تتراكم كافة الأحرف حتى يتم العثور على محدد أو نهاية سطر في الإدخال.
    • STOP_AT_DELIMITERإذا تم العثور على علامات الاقتباس unescaped في الإدخال، يتم تخطي المحتوى تحليل القيمة المحددة ويتم إنتاج القيمة nullValue المعينة في بدلا من ذلك.
    • RAISE_ERROR: إذا تم العثور على علامات الاقتباس unescaped في الإدخال، TextParsingException يتم طرح.
  • modePERMISSIVE(افتراضي): يسمح بوضع للتعامل مع السجلات التالفة أثناء التحليل. وهو يدعم الأوضاع التالية غير الحساسة لحالة الأحرف. يحاول Spark تحليل الأعمدة المطلوبة فقط في CSV ضمن تقليم العمود. لذلك، يمكن أن تكون السجلات تالفة مختلفة استنادا إلى مجموعة الحقول المطلوبة. يمكن التحكم في هذا السلوك بواسطة spark.sql.csv.parser.columnPruning.enabled (تمكين بشكل افتراضي).
    • PERMISSIVEعندما يفي بسجل تالف، يضع السلسلة المشوهة في حقل تم تكوينه بواسطة columnNameOfCorruptRecord ، ويهيئ حقولا مشوهة إلى فارغة. للاحتفاظ بسجلات تالفة، يمكن للمستخدم تعيين حقل نوع سلسلة يسمى columnNameOfCorruptRecord في مخطط معرف من قبل المستخدم. إذا لم يكن لدى مخطط الحقل، فإنه يسقط السجلات التالفة أثناء تحليل. سجل مع رموز مميزة أقل أو أكثر من المخطط ليس سجل تالف إلى CSV. عندما يفي بسجل وجود رموز مميزة أقل من طول المخطط تعيين null إلى حقول إضافية. عندما يحتوي السجل على رموز مميزة أكثر من طول المخطط، يسقط رموزا مميزة إضافية.
    • FAILFASTيطرح استثناء عندما يفي بالسجلات التالفة.
  • columnNameOfCorruptRecord (الافتراضي هو القيمة المحددة spark.sql.columnNameOfCorruptRecord في): يسمح بإعادة تسمية الحقل الجديد الذي يحتوي على سلسلة مشوهة تم إنشاؤها بواسطة PERMISSIVE الوضع. وهذا يتجاوز spark.sql.columnNameOfCorruptRecord .
  • multiLinefalse(افتراضي): تحليل سجل واحد، والذي قد يمتد عبر أسطر متعددة.
  • localeen-US(افتراضي): تعيين لغة كعلامة لغة بتنسيق IETF BCP 47. على سبيل المثال، يتم استخدام هذا أثناء تحليل التواريخ والطوابع الزمنية.
  • lineSep (الافتراضي يغطي كافة \r\r\n ، \n و): يحدد فاصل الأسطر الذي يجب استخدامه لتحليل. الحد الأقصى للطول هو حرف واحد.
  • pathGlobFilterنمط glob اختياري لتضمين الملفات التي تحتوي على مسارات مطابقة للنمط فقط. يتبع بناء org.apache.hadoop.fs.GlobFilter الجملة . لا يغير سلوك اكتشاف القسم.

أمثلة

> SELECT from_csv('1, 0.8', 'a INT, b DOUBLE');
 {1,0.8}
> SELECT from_csv('26/08/2015', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
 {"time":2015-08-26 00:00:00}