Spark SQL插入选择带有列列表?

时间:2019-01-09 01:30:50

标签: apache-spark

在我阅读Spark / Hive SQL文档时,似乎发现插入到具有列列表的表中不支持。

我有一个源表和一个目标表,它们具有不同的列数和需要复制的不同列名。

这是否意味着我必须在PySpark中编写代码才能完成此工作,因为Spark SQL将无法做到这一点?

示例:

input_table( cola, colb, colc, cold, cole)

output_table(fieldx, fieldy, fieldz)

在SQL中(假设使用RDBMS,例如MS-SQL,PostgreSQL等),我将执行以下操作:

insert into output_table(fieldx, fieldy, fieldz) select cola, colb, colc from input_table

Spark SQL不允许这样做,它不接受Insert SQL语句中的列列表。

问题:如何在PySpark或(理想情况下)在Spark-SQL(我正在使用Spark 2.4)中以最少的代码和最高的性能执行此任务?

谢谢

1 个答案:

答案 0 :(得分:3)

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