Glue crawler 检测到架构的原因是 UNKNOWN,因为源文件中存在的行数。请参阅您在本文档中使用的内置 CSV 分类器部分。
根据要归类为 CSV 的 doc,表 schema 必须至少有两列和两行数据。
在您的情况下,您可以使用 AWS Glue 作业并使用以下任一方式直接从 S3 读取文件:
1.创建一个动态帧并将spearator传递为;在格式选项中。以下是示例,您可以根据需要进行修改。
dyF = GlueContext.create_dynamic_frame_from_options(connection_type="s3",connection_options = {"paths": [InputDir]},format="csv",format_options={"withHeader": True,"separator": ";","quoteChar": '"',"escaper": '"'},transformation_ctx = "taxidata")
2.如果您想利用 Glue 原生转换,请使用 spark 数据帧从 S3 读取数据,然后将其转换回动态帧:
df = spark.read.options(delimiter=';').csv("s3://path-to-files/")
如果您想合并具有不同架构的文件,则将包含不同架构的数据读取到您选择的不同框架中,然后使用 Join 运算符将它们合并。
请参阅this,其中包含示例代码以加入并将数据写回 s3。