使用 Glue 目录的 EMR PySpark |无法从空字符串创建路径;
EMR PySpark using Glue Catalog | Can not create a Path from an empty string;
我正在尝试使用以下 spark sql 显示数据:
spark.sql('select id,name,last_modified_dt,created_ts from (select a.*, row_number() over (partition by id order by created_ts desc ,last_modified_dt desc) as rnk from ( select * from pratik_test_staging.temp1 s union all select id,name,last_modified_dt,created_ts from pratik_test_temp.temp1)a)b where rnk = 1').show()
它给我的输出为:
但是当我试图将它写回 pratik_test_staging.temp1 时,它向我抛出错误:
spark.sql('select id,name,last_modified_dt,created_ts from (select a.*, row_number() over (partition by id order by created_ts desc ,last_modified_dt desc) as rnk from ( select * from pratik_test_staging.temp1 s union all select id,name,last_modified_dt,created_ts from pratik_test_temp.temp1)a)b where rnk = 1').write.mode('overwrite').insertInto('pratik_test_staging.temp1',overwrite=True)
错误:
注意:
1. 我在 ORC 和 Parquet 上都试过了,两种文件格式都出现了同样的错误。
2. 我是 运行 Spark(EMR) 使用 Glue 目录。数据存储在 S3
您需要指定路径。你可以试试这个。
resultDf.write
.option("path",outputPath)
.mode(SaveMode.Overwrite)
.saveAsTable(outputTableName)
我正在尝试使用以下 spark sql 显示数据:
spark.sql('select id,name,last_modified_dt,created_ts from (select a.*, row_number() over (partition by id order by created_ts desc ,last_modified_dt desc) as rnk from ( select * from pratik_test_staging.temp1 s union all select id,name,last_modified_dt,created_ts from pratik_test_temp.temp1)a)b where rnk = 1').show()
它给我的输出为:
但是当我试图将它写回 pratik_test_staging.temp1 时,它向我抛出错误:
spark.sql('select id,name,last_modified_dt,created_ts from (select a.*, row_number() over (partition by id order by created_ts desc ,last_modified_dt desc) as rnk from ( select * from pratik_test_staging.temp1 s union all select id,name,last_modified_dt,created_ts from pratik_test_temp.temp1)a)b where rnk = 1').write.mode('overwrite').insertInto('pratik_test_staging.temp1',overwrite=True)
错误:
注意: 1. 我在 ORC 和 Parquet 上都试过了,两种文件格式都出现了同样的错误。 2. 我是 运行 Spark(EMR) 使用 Glue 目录。数据存储在 S3
您需要指定路径。你可以试试这个。
resultDf.write
.option("path",outputPath)
.mode(SaveMode.Overwrite)
.saveAsTable(outputTableName)