2015-11-10 3 views
0

Использование: Apache просверлитьПреобразование CSV строки в несколько столбцов в Apache Drill

Я пытаюсь привести следующие данные в более структурированном виде:

"apple","juice", "box:12,shipment_id:143,pallet:B12" 
"mango", "pulp", "box:7,shipment_id:133,pallet:B19,route:11" 
"grape", "jam", "box:10" 

Желаемый результат:

fruit, product, box_id, shipment_id, pallet_id, route_id 
apple,juice, 12, 143, B12, null 
mango, pulp, 7, 133, B19, 11 
grape, jam, 10, null, null, null 

Dataset запускается в пару GB. Сверло считывает ввод в три столбца с последней строкой в ​​одном столбце. Успешно достигнув желаемого результата, выполнив операции манипуляции строками (REGEXP_REPLACE и CONCAT) в последнем столбце, затем прочитав столбец как json (CONVERT_FROM) и, наконец, разделившись на разные столбцы, используя KVGEN и FLATTEN.

Время выполнения довольно высокое из-за функций регулярного выражения. Есть ли лучший подход?

(PS: время выполнения сравнивается с использованием задания pyspark для достижения желаемого результата).

ответ

0

Я не вижу никакого другого способа сделать это на 100% с Apache Drill, без какого-либо промежуточного хранения

Вы можете попробовать с пользовательской функции в Java, чтобы сделать его проще писать.

С тех пор как вы сделали работу, вы пытались сохранить данные в файле Parquet? CTAS: http://drill.apache.org/docs/create-table-as-ctas-command/

Это сделает последующие запросы намного быстрее.

 Смежные вопросы

  • Нет связанных вопросов^_^