无法在 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 查询中指定数据源。
我相信只有 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`
我正在尝试使用 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 查询中指定数据源。
我相信只有 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`