0
在Hive shell中执行此操作时: select * from table_name limit 5
需要18秒才能完成;带有Hive数据源的SparkSQL将为head()执行全表扫描?
但是,当我写这篇文章SparkSQL:
table = hiveCtx.sql("select * from table_name")
print table.head()
这是相同的,当我写
table = hiveCtx.sql("select * from table_name limit 5")
或
table = hiveCtx.table("table_name")
我看到它导致HiveTableScan,这在实际执行head()
之前需要超过30分钟才能完成,因为表格是真的 大。
我想知道它是否是SparkSQL的恰当行为?或者我做错了什么?
我正在使用Spark 1.6.3。
谢谢!那么SparkSQL和Hive之间相同SQL的执行逻辑是不同的? – DarkZero
不一定。例如,您可以将Spark限制为1个执行程序,但这会破坏分布式处理的目的 –