And*_*iev 6 hiveql apache-spark spark-dataframe
例如,我想要传递给Spark SQL的Hive HQL语句很少:
set parquet.compression=SNAPPY;
create table MY_TABLE stored as parquet as select * from ANOTHER_TABLE;
select * from MY_TABLE limit 5;
Run Code Online (Sandbox Code Playgroud)
以下不起作用:
hiveContext.sql("set parquet.compression=SNAPPY; create table MY_TABLE stored as parquet as select * from ANOTHER_TABLE; select * from MY_TABLE limit 5;")
Run Code Online (Sandbox Code Playgroud)
如何将语句传递给Spark SQL?
我在一个场景中工作,我需要读取一个 sql 文件并运行所有的;该文件中存在分离的查询。
一种简单的方法是这样的:
val hsc = new org.apache.spark.sql.hive.HiveContext(sc)
val sql_file = "/hdfs/path/to/file.sql"
val file = sc.wholeTextFiles(s"$sql_file")
val queries = f.take(1)(0)._2
Predef.refArrayOps(queries.split(';')).map(query => hsc.sql(query))
Run Code Online (Sandbox Code Playgroud)
感谢@SamsonScharfrichter 的回答。
这将起作用:
hiveContext.sql("set spark.sql.parquet.compression.codec=SNAPPY")
hiveContext.sql("create table MY_TABLE stored as parquet as select * from ANOTHER_TABLE")
val rs = hiveContext.sql("select * from MY_TABLE limit 5")
Run Code Online (Sandbox Code Playgroud)
请注意,在这种特殊情况下,我们需要使用spark.sql.parquet.compression.codec而不是parquet.compression密钥
| 归档时间: |
|
| 查看次数: |
6092 次 |
| 最近记录: |