我们可以使用以下命令轻松地从Spark中的Hive表中读取记录:
Row[] results = sqlContext.sql("FROM my_table SELECT col1, col2").collect();
但当我加入两个表时,例如:
select t1.col1, t1.col2 from table1 t1 join table2 t2 on t1.id = t2.id
如何从上述联接查询中检索记录?
SparkContext.sql
方法总是返回DataFrame
,因此JOIN
和任何其他类型的查询之间没有实际区别。
不过,您不应该使用collect
方法,除非向驱动程序获取数据确实是一种理想的结果。它的成本很高,如果驱动程序内存中无法容纳数据,它就会崩溃。