如何仅从外部表中读取指向 ADLS 中具有数千个文件的文件夹的特定文件?
最佳答案
当外部表已经创建时,您不能使用外部表/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)
关于azure-sqldw - Azure 数据仓库外部表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48014216/