مشاركة عبر


from_csv دالة

ينطبق على: وضع علامة Databricks SQL وضع علامة Databricks Runtime

إرجاع قيمة بنية مع csvStr و schema.

بناء الجملة

from_csv(csvStr, schema [, options])

الوسيطات

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

المرتجعات

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

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

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

  • sep (افتراضي ,): يعين فاصلا لكل حقل وقيمة. يمكن أن يكون هذا الفاصل حرفا واحدا أو أكثر.
  • encoding (UTF-8 الافتراضي): فك ترميز ملفات CSV حسب نوع الترميز المحدد.
  • quote (افتراضي "): يعين حرفا واحدا يستخدم للهروب من القيم المقتبسة حيث يمكن أن يكون الفاصل جزءا من القيمة. إذا كنت ترغب في إيقاف تشغيل الاقتباسات، فأنت بحاجة إلى تعيين ليس فارغا ولكن سلسلة فارغة. يختلف هذا السلوك عن com.databricks.spark.csv.
  • escape (افتراضي \): يعين حرفا واحدا يستخدم للهروب من علامات الاقتباس داخل قيمة مقتبسة بالفعل.
  • charToEscapeQuoteEscaping (افتراضي escape أو \0): يعين حرفا واحدا يستخدم للهروب من الهروب لحرف الاقتباس. القيمة الافتراضية هي حرف الإلغاء عندما escape تكون الأحرف مختلفة quote ، \0 وإلا.
  • comment (سلسلة فارغة افتراضية): يعين حرفا واحدا يستخدم لتخطي الأسطر التي تبدأ بهذا الحرف. يتم تعطيله في الوضع الافتراضي.
  • العنوان (الافتراضي false): يستخدم السطر الأول كأسماء أعمدة.
  • enforceSchema (افتراضي true): إذا تم تعيينه إلى صحيح، يتم تطبيق المخطط المحدد أو المستنتج قسرا على ملفات مصدر البيانات، ويتم تجاهل الرؤوس في ملفات CSV. إذا تم تعيين الخيار إلى خطأ، يتم التحقق من صحة المخطط مقابل كافة الرؤوس في ملفات CSV في الحالة عند تعيين خيار العنوان إلى صحيح. يتم تحديد أسماء الحقول في أسماء المخططات والأعمدة في رؤوس CSV بواسطة مواضعها مع مراعاة spark.sql.caseSensitive. على الرغم من أن القيمة الافتراضية صحيحة، فمن المستحسن تعطيل خيار enforceSchema لتجنب النتائج غير الصحيحة.
  • inferSchema (الافتراضي false): يستنتج مخطط الإدخال تلقائيا من البيانات. يتطلب تمرير إضافي واحد عبر البيانات.
  • samplingRatio (الافتراضي 1.0): يحدد جزء من الصفوف المستخدمة لاستدلال المخطط.
  • ignoreLeadingWhiteSpace (افتراضي false): علامة تشير إلى ما إذا كان يجب تخطي المسافات البيضاء البادئة من القيم التي تتم قراءتها أم لا.
  • ignoreTrailingWhiteSpace (افتراضي false): علامة تشير إلى ما إذا كان يجب تخطي المسافات البيضاء اللاحقة من القيم التي تتم قراءتها أم لا.
  • nullValue (سلسلة فارغة افتراضية): يعين تمثيل السلسلة لقيمة خالية.
  • emptyValue (سلسلة فارغة افتراضية): يعين تمثيل السلسلة لقيمة فارغة.
  • nanValue (افتراضي NaN): يعين تمثيل السلسلة لقيمة غير رقمية.
  • positiveInf (افتراضي Inf): يعين تمثيل السلسلة لقيمة لا نهاية موجبة.
  • negativeInf (الافتراضي -Inf): يعين تمثيل السلسلة لقيمة اللانهاية السالبة.
  • dateFormat (افتراضي yyyy-MM-dd): يعين السلسلة التي تشير إلى تنسيق تاريخ. تتبع تنسيقات التاريخ المخصصة التنسيقات في أنماط التاريخ والوقت. ينطبق هذا على نوع التاريخ.
  • timestampFormat (افتراضي yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): يعين السلسلة التي تشير إلى تنسيق الطابع الزمني. تتبع تنسيقات التاريخ المخصصة التنسيقات في أنماط التاريخ والوقت. ينطبق هذا على نوع الطابع الزمني.
  • maxColumns (افتراضي 20480): يحدد الحد الثابت لعدد الأعمدة التي يمكن أن يحتويها السجل.
  • maxCharsPerColumn (الافتراضي -1): يحدد الحد الأقصى لعدد الأحرف المسموح به لأي قيمة محددة تتم قراءتها. بشكل افتراضي، هو -1 يعني طولا غير محدود
  • unescapedQuoteHandling (الافتراضي STOP_AT_DELIMITER): يحدد كيفية تعامل محلل CSV مع القيم بعلامات اقتباس غير مغلفة.
    • STOP_AT_CLOSING_QUOTE: إذا تم العثور على علامات اقتباس غير مغلفة في الإدخال، قم بتجميع حرف الاقتباس ومتابعة تحليل القيمة كقيمة مقتبسة، حتى يتم العثور على اقتباس إغلاق.
    • BACK_TO_DELIMITER: إذا تم العثور على علامات اقتباس غير مغلفة في الإدخال، ففكر في القيمة كقيمة غير مقتبسة. سيؤدي ذلك إلى تجميع المحلل لكافة أحرف القيمة الحالية التي تم تحليلها حتى يتم العثور على المحدد. إذا لم يتم العثور على محدد في القيمة، فسيستمر المحلل في تجميع الأحرف من الإدخال حتى يتم العثور على محدد أو نهاية سطر.
    • STOP_AT_DELIMITER: إذا تم العثور على علامات اقتباس غير مغلفة في الإدخال، ففكر في القيمة كقيمة غير مقتبسة. سيؤدي هذا إلى جعل المحلل يتراكم جميع الأحرف حتى يتم العثور على المحدد أو نهاية السطر في الإدخال.
    • STOP_AT_DELIMITER: إذا تم العثور على علامات اقتباس غير مغلفة في الإدخال، يتم تخطي المحتوى الذي تم تحليله للقيمة المحددة ويتم إنتاج القيمة التي تم تعيينها في nullValue بدلا من ذلك.
    • RAISE_ERROR: إذا تم العثور على علامات اقتباس غير مغلفة في الإدخال، TextParsingException يتم طرح .
  • mode (الافتراضي PERMISSIVE): يسمح بوضع للتعامل مع السجلات التالفة أثناء التحليل. وهو يدعم الأوضاع التالية غير الحساسة لحالة الأحرف. يحاول Spark تحليل الأعمدة المطلوبة فقط في CSV ضمن تقليم الأعمدة. لذلك، يمكن أن تختلف السجلات التالفة استنادا إلى مجموعة الحقول المطلوبة. يمكن التحكم في هذا السلوك بواسطة spark.sql.csv.parser.columnPruning.enabled (ممكن افتراضيا).
    • PERMISSIVE: عندما يفي بسجل تالف، يضع السلسلة التي تم تكوينها بشكل غير سليم في حقل تم تكوينه بواسطة ، ويعين الحقول التي تم تكوينها columnNameOfCorruptRecordبشكل غير سليم إلى قيمة خالية. للاحتفاظ بالسجلات التالفة، يمكن للمستخدم تعيين حقل نوع سلسلة يسمى columnNameOfCorruptRecord في مخطط معرف من قبل المستخدم. إذا لم يكن المخطط يحتوي على الحقل، فإنه يسقط سجلات تالفة أثناء التحليل. السجل الذي يحتوي على عدد أقل أو أكثر من الرموز المميزة من المخطط ليس سجلا تالفا ل CSV. عندما يستوفي سجلا يحتوي على رموز مميزة أقل من طول المخطط، يعين خالية إلى حقول إضافية. عندما يحتوي السجل على رموز مميزة أكثر من طول المخطط، فإنه يسقط رموزا مميزة إضافية.
    • FAILFAST: يطرح استثناء عندما يفي بالسجلات التالفة.
  • columnNameOfCorruptRecord (الافتراضي هو القيمة المحددة في spark.sql.columnNameOfCorruptRecord): يسمح بإعادة تسمية الحقل الجديد الذي يحتوي على سلسلة مشوهة تم إنشاؤها بواسطة PERMISSIVE الوضع. هذا يتجاوز spark.sql.columnNameOfCorruptRecord.
  • multiLine (افتراضي false): توزيع سجل واحد، والذي قد يمتد عبر أسطر متعددة.
  • locale (افتراضي en-US): يعين الإعدادات المحلية كعلامة لغة بتنسيق IETF BCP 47. على سبيل المثال، يتم استخدام هذا أثناء تحليل التواريخ والطوابع الزمنية.
  • lineSep (الافتراضي يغطي جميع \rو \r\nو \n): يحدد فاصل الأسطر الذي يجب استخدامه لتحليله. الحد الأقصى للطول هو حرف 1.
  • 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}