【发布时间】:2017-09-10 16:41:41
【问题描述】:
我有一个包含 100 列和 1000 万条记录的输入表 (I)。我想得到一个有 50 列的输出表 (O),这些列是从 I 的列派生的,即将有 50 个函数将 I 的列映射到 O 的 50 列,即 o1 = f( i1) , o2 = f(i2, i3) ..., o50 = f(i50, i60, i70).
在 spark sql 中,我可以通过两种方式做到这一点:
- 行转换,将 I 的整行逐一解析(例如:映射函数)以生成 O 行。
- 使用我猜想在列级别工作的 UDF,即将 I 的现有列作为输入并生成 O 的相应列之一,即使用 50 个 UDF 函数。
鉴于我正在处理整个输入表 I并生成全新的输出表 O 即批量数据处理。
【问题讨论】:
-
您好 sunillp,正如您所描述的,我正面临行与列转换之间的确切困境。你能分享一下经验吗?你最后做了什么,最后表现如何?谢谢。
标签: sql apache-spark apache-spark-sql user-defined-functions