Spark SQL - 使用CAST在STRING和BIGINT上连接两个表

时间:2018-06-05 11:31:26

标签: apache-spark hive apache-spark-sql

我有一个HIVE查询,它使用在一个表中声明为String而在另一个表中声明为BIGINT的值来连接两个表。 String和BIGINT中的实际数据相同。

此查询在HIVE中正常运行

SELECT TABLE1.*
FROM TABLE1 LEFT OUTER JOIN TABLE2 
     ON TABLE1.<STRING COLUMN> = cast(TABLE2.<BIGINT COLUMN> as string) 

但是当我使用HIVE上下文在spark-shell中运行相同的查询时,我得到一个类强制转换异常。

hiveContext.sql("""SELECT TABLE1.*
FROM TABLE1 LEFT OUTER JOIN TABLE2 
     ON TABLE1.<STRING COLUMN> = cast(TABLE2.<BIGINT COLUMN> as string)""")

这导致:

 java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.io.LongWritable

0 个答案:

没有答案