Azure Databricks загружает файлы из Azure озера данных - PullRequest
0 голосов
/ 05 мая 2020

Я установил наш ADLS на Azure Databricks. Наши файлы в ADLS разделены вертикальной чертой (|). Я пытаюсь загрузить файлы в хранилище метаданных Databricks, используя либо внешнюю таблицу (создать внешнюю таблицу) ..., либо загружать фрейм данных из смонтированных файлов. Моя проблема в том, что одно поле вызывает у меня проблемы. Поле представляет собой большую строку со встроенными трубками (|). Итак, я решил, что могу передать идентификатор в кавычках, чтобы он мог игнорировать каналы в поле.

Что-то вроде

rdd = spark.read.format("csv").option("sep","|")\
    .option("header","false")\
    .option("inferSchema", "true")\
    .option("quotes", "~~")\
    .load("/mnt...

или

CREATE EXTERNAL 
TABLE IF NOT EXISTS TestCSVLoad
(
  Name STRING,
  Address STRING,
  Desc STRING
)
PARTITIONED BY (Date STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
--ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
--WITH SERDEPROPERTIES (
--   "separatorChar" = "|",
--   "quoteChar"     = "~~"
--)
--this is the default serde
--ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
--WITH SERDEPROPERTIES (
--  'field.delim' = '|',
--  'serialization.format' = '|'
--)

, но опция кавычек предназначена только для одного символа .... моя строка имеет ~~ для начала и конца .

Любая идея, как я могу поместить эти данные в блоки данных?

...