无法在 Apache Spark 中创建 HIVE table

Unable to Create HIVE table in Apache Spark

我正在尝试使用 Databricks 在 Apache Spark 中创建一个 HIVE table。

我正在使用以下代码:

%sql
CREATE OR REPLACE VIEW testdatabase.testtable

AS

SELECT
*
FROM location '/mnt/mylocation'

但我收到以下错误:

Error in SQL statement: ParseException: 
extraneous input ''/mnt/mylocation'' expecting {<EOF>, ';'}(line 7, pos 14)

== SQL ==
CREATE OR REPLACE VIEW testdatabase.testtable

AS

SELECT
*
FROM location '/mnt/mylocation'

谁能告诉我哪里出错了?

我认为 VIEWS 不支持在 SELECT 查询中指定数据源。

CREATE VIEW Spark 3.0.1 Doc

我相信只有 TABLES 支持 location keyword。请记住,当您指定位置路径时,创建 Hive“Table”只是指向文件的指针。

将其更改为 CREATE TABLE 语句并指定架构应该可行。

CREATE TABLE testdatabase.testtable (
 col1 INT,
 col2 STRING,
 ...
)
USING PARQUET
LOCATION '/mnt/mylocation'

如果您只是想要一些短暂的东西,您可以将其作为 DataFrame 读入,然后 register a temp table

df = spark.read.parquet('/mnt/mylocation')
df.createOrReplaceTempView('testtable')

现在您可以在 SQL 个单元格中使用 default.testtable

您可以这样做,但您需要更改语法 - 而不是 location 使用格式(在 documentation 中有描述):

<file_format>.`<location>`

例如:

%sql
CREATE OR REPLACE VIEW testdatabase.testtable
AS SELECT *
FROM delta.`/mnt/mylocation`