【发布时间】:2018-10-27 14:34:13
【问题描述】:
我想使用以下代码在 spark 中对我的 parquet 数据运行 sql,
val parquetDF = spark.read.parquet(path)
parquetDF.createOrReplaceTempView("table_name")
val df = spark.sql("select column_1, column_4, column 10 from table_name");
println(df.count())
我的问题是,此代码是否只读取光盘中所需的列?
理论上答案应该是肯定的。但我需要专家意见,因为在 Jdbc 查询(Mysql)的情况下, 与操作相比,读取(spark.read)阶段需要更多时间(可能与连接有关,但不确定)。 Jdbc代码如下,
spark.read.format("jdbc").jdbc(jdbcUrl, query, props).createOrReplaceTempView(table_name)
spark.sql("select column_1, column_4, column 10 from table_name");
df.show()
println(df.count())
如果有人能解释这两种情况下的框架流程,那将非常有帮助。
Spark 2.3.0 版
Scala 版本 2.11.11
【问题讨论】:
标签: scala apache-spark dataframe parquet