如何将多个语句传递到 Spark SQL HiveContext
How to pass multiple statements into Spark SQL HiveContext
例如,我有几个要传递到 Spark 中的 Hive HQL 语句 SQL:
set parquet.compression=SNAPPY;
create table MY_TABLE stored as parquet as select * from ANOTHER_TABLE;
select * from MY_TABLE limit 5;
以下无效:
hiveContext.sql("set parquet.compression=SNAPPY; create table MY_TABLE stored as parquet as select * from ANOTHER_TABLE; select * from MY_TABLE limit 5;")
如何将语句传递到 Spark SQL?
感谢@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")
请注意,在这种特殊情况下,我们需要使用 spark.sql.[=21 而不是 parquet.compression 密钥=].codec
我处理了一个场景,我需要读取 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))
这个函数帮助我解决了 Spark 的限制:
def execute_query(spark, sql_script):
sql_arr = sql_script.split(";")
#print(sql_arr)
for sql in sql_arr:
if len(sql.strip()) > 0:
print(sql)
#spark.sql(sql.strip())
print(spark.sql(sql))
例如,我有几个要传递到 Spark 中的 Hive HQL 语句 SQL:
set parquet.compression=SNAPPY;
create table MY_TABLE stored as parquet as select * from ANOTHER_TABLE;
select * from MY_TABLE limit 5;
以下无效:
hiveContext.sql("set parquet.compression=SNAPPY; create table MY_TABLE stored as parquet as select * from ANOTHER_TABLE; select * from MY_TABLE limit 5;")
如何将语句传递到 Spark SQL?
感谢@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")
请注意,在这种特殊情况下,我们需要使用 spark.sql.[=21 而不是 parquet.compression 密钥=].codec
我处理了一个场景,我需要读取 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))
这个函数帮助我解决了 Spark 的限制:
def execute_query(spark, sql_script):
sql_arr = sql_script.split(";")
#print(sql_arr)
for sql in sql_arr:
if len(sql.strip()) > 0:
print(sql)
#spark.sql(sql.strip())
print(spark.sql(sql))