【发布时间】:2016-11-25 04:45:24
【问题描述】:
所以我有一个包含数十亿行的非常大的表,我尝试了 Spark DataFrame API 来加载数据,这是我的代码:
sql = "select * from mytable where day = 2016-11-25 and hour = 10"
df = sqlContext.read \
.format("jdbc") \
.option("driver", driver) \
.option("url", url) \
.option("user", user) \
.option("password", password) \
.option("dbtable", table) \
.load(sql)
df.show()
我在mysql中输入了sql,它返回了大约100行,但是上面的sql在spark sql中不起作用,出现OOM错误,似乎spark sql在没有使用where子句的情况下将所有数据加载到内存中。那么如何使用 where 子句触发 sql 呢?
【问题讨论】:
-
尝试运行这个:df = sqlContext.read \ .format("jdbc") \ .option("driver", driver) \ .option("url", url) \ .option(" user", user) \ .option("password", password) \ .option("dbtable", table) \ .load("select * from mytable").where($"day"==="2016-11 -25" 和 $"hour" === 10)
标签: apache-spark apache-spark-sql spark-dataframe