据我阅读 Spark/Hive SQL 文档,Spark 2.4 及更早版本不支持使用列列表插入表。
我有一个源表和一个目标表,它们具有不同的列数和不同的列名称,我需要复制它们。
这是否意味着我必须在 PySpark 中编写代码才能完成这项工作,因为 Spark SQL 将无法做到这一点?
例子:
input_table( cola, colb, colc, cold, cole)
output_table(fieldx, fieldy, fieldz)
Run Code Online (Sandbox Code Playgroud)
在 SQL 中(假设 RDBMS,例如 MS-SQL、PostgreSQL 等),我将执行以下操作:
insert into output_table(fieldx, fieldy, fieldz) select cola, colb, colc from input_table
Run Code Online (Sandbox Code Playgroud)
Spark SQL 不允许这样做,它不接受 Insert SQL 语句中的列列表。
问题:如何在 PySpark 或(理想情况下)Spark-SQL(我使用 Spark 2.4)中以最少的代码和最高的性能完成此任务?
谢谢
output指定不会从input_table中null复制的列select。insert(如果允许的话,当只有一组列(而不是全部)使用列列表进行编辑时,就会发生这种情况)
insert into output_table
select cola, colb, colc,null as other1,--..specify non-copied column values as null
from input_table
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11337 次 |
| 最近记录: |