0

使用:阿帕奇钻

我正在尝试以更结构化的形式提供以下数据:

"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

数据集运行到几个 GB。Drill 将输入读入三列,最后一个字符串在一列中。通过对最后一列执行字符串操作(REGEXP_REPLACE 和 CONCAT),然后将该列读取为 json(CONVERT_FROM),最后使用 KVGEN 和 FLATTEN 分离成不同的列,已成功实现所需的输出。

由于正则表达式函数,执行时间相当长。有更好的方法吗?

(PS:执行时间与使用 pyspark 作业来实现所需的输出进行比较)。

4

1 回答 1

0

我没有看到任何其他方法可以 100% 使用 Apache Drill,没有任何中间存储

您可以尝试使用 Java 中的自定义函数,以使其更易于编写。

既然您已经完成了这项工作,您是否尝试将数据保存在 Parquet 文件中?CTAS 命令:http ://drill.apache.org/docs/create-table-as-ctas-command/

这将使后续查询更快。

于 2015-11-18T08:03:19.207 回答