pyspark 2.4无法从sql命令创建表需要Hive支持才能创建Hive TABLE

时间:2019-06-25 14:35:31

标签: hive pyspark pyspark-sql

我正在使用pyspark 2.4,并且已经启用了HiveSupport:

function pickColor() {
  chrome.storage.sync.get('color', function(color) { // or data, but then use data.color
    var test = document.querySelector('a[data-style-name=' + color + ']');
    if (test) chrome.runtime.sendMessage({redirect: test.href});
  })
}

但是当我跑步时:

spark = SparkSession.builder.appName("spark").enableHiveSupport().getOrCreate()

我遇到了错误:

spark.sql("""
CREATE TABLE reporting.sport_ads AS

SELECT 
*
, 'Home' as HomeOrAway
, HomeTeam as TeamName
FROM adwords_ads_brand
UNION
SELECT 
*
, 'Away' as HomeOrAway
, AwayTeam as TeamName
FROM adwords_ads_brand
""")

对我来说没有任何意义,我做错了什么吗?

ps:我必须补充一点,此代码在databricks和Scala中的Spark上都能很好地工作。

1 个答案:

答案 0 :(得分:1)


在您的 pyspark

中检查以下配置值
>>> spark.sparkContext.getConf().get("spark.sql.catalogImplementation")

如果属性值未设置为 hive


尝试在pyspark shell中传递以下conf

--conf spark.sql.catalogImplementation=hive

然后再次运行您的代码。

UPDATE:

根据联合查询创建 dataframe

val df = spark.sql("""SELECT 
*
, 'Home' as HomeOrAway
, HomeTeam as TeamName
FROM adwords_ads_brand
UNION
SELECT 
*
, 'Away' as HomeOrAway
, AwayTeam as TeamName
FROM adwords_ads_brand""")

然后使用 .saveAsTable 函数将数据框另存为表

df.format("<parquet,orc..etc>").saveAsTable("<table_name>")