“无法从空字符串创建路径”使用 S3 路径在 hive 中出现“CREATE TABLE AS”错误

Adi*_*uba 8 hive amazon-web-services pyspark aws-glue-data-catalog aws-glue-spark

我正在尝试使用 hive 在 EMR 中运行的 Spark 中使用来自 Spark 的 s3 路径位置在 Glue 目录中创建一个表。我已尝试以下命令,但出现错误:

pyspark.sql.utils.AnalysisException:u'java.lang.IllegalArgumentException:无法从空字符串创建路径;'

sparksession.sql("CREATE TABLE IF NOT EXISTS abc LOCATION 's3://my-bucket/test/' as (SELECT * from my_table)")

sparksession.sql("CREATE TABLE abcSTORED AS PARQUET LOCATION 's3://my-bucket/test/' AS select * from my_table")

sparksession.sql("CREATE TABLE abcas SELECT * from my_table USING PARQUET LOCATION 's3://my-bucket/test/'")

有人可以建议我缺少的参数吗?

小智 12

当在没有指定位置的情况下创建数据库时会出现此问题:

CREATE DATABASE db_name;
Run Code Online (Sandbox Code Playgroud)

要解决此问题,请在创建数据库时指定位置:

CREATE DATABASE db_name LOCATION 's3://my-bucket/db_path';
Run Code Online (Sandbox Code Playgroud)

然后,创建一个表:

USE db_name;
CREATE TABLE IF NOT EXISTS abc LOCATION 's3://my-bucket/db_path/abc' as (SELECT * from my_table)
Run Code Online (Sandbox Code Playgroud)