【发布时间】:2018-06-09 09:35:09
【问题描述】:
如何仅从外部表中读取指向 ADLS 中包含数千个文件的文件夹的特定文件?
【问题讨论】:
-
你不能。在 location 属性中重新创建指向该特定文件的外部表。
标签: azure-sqldw
如何仅从外部表中读取指向 ADLS 中包含数千个文件的文件夹的特定文件?
【问题讨论】:
标签: azure-sqldw
当外部表已创建时,您不能对外部表/Polybase 执行此操作,但您可以创建自己的外部表,并在定义中指定文件名。例如,如果您的表定义是这样的(文件名未指定):
CREATE EXTERNAL TABLE ext.LINEITEM (
L_ORDERKEY BIGINT NOT NULL,
...
)
WITH (
LOCATION = 'input/lineitem/',
DATA_SOURCE = AzureDataLakeStore,
FILE_FORMAT = TextFileFormat
);
你可以复制它和你自己的表格,例如
CREATE EXTERNAL TABLE ext.LINEITEM_42 (
L_ORDERKEY BIGINT NOT NULL,
...
)
WITH (
LOCATION = 'input/lineitem/lineitem42.txt',
DATA_SOURCE = AzureDataLakeStore,
FILE_FORMAT = TextFileFormat
);
看到区别了吗?另一种选择是使用可以轻松访问数据湖的语言/平台之一,例如 U-SQL、Databricks 来编写访问湖的查询,例如一点 U-SQL:
@input =
EXTRACT
l_orderkey int
...
FROM "/input/lineitem/lineitem42.txt"
USING Extractors.Csv(skipFirstNRows : 1 );
一点 Scala:
val lineitem42 = "/mnt/lineitem/lineitem42.txt"
var df42 = spark.read
.option("sep", "|") // Use pipe separator
.csv(lineitem42)
【讨论】: