如何读取S3中带有标题行的CSV文件?

0

【以下的问题经过翻译处理】 有没有办法配置Glue可以读取CSV文件并忽略其中的标题行?我不知道如何实现这个功能。 我可能说的不是很清楚,下面是在其他一些类似工具中的实现: Spark 中的 header Redshift Copy中的 ignoreheader Redshift 外部表中的 'skip.header.line.count'='1'

profile picture
专家
已提问 5 个月前9 查看次数
1 回答
0

【以下的回答经过翻译处理】 如果您使用Glue爬取文件并将其添加到Glue目录中,您可以设置此表属性:

skip.header.line.count=1

我在控制台中手动设置了该属性,可以忽略了标题行,在Athena中进行了查询。您也可以通过API或在CloudFormation模板中设置表属性。

如果您使用Glue Spark库查询Catalog中的表,也可以这样做:

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

glueContext = GlueContext(SparkContext.getOrCreate())
df = glueContext.create_dynamic_frame.from_catalog(
       database = "default",
       table_name = "headertest_headertest")
df.printSchema()
df.toDF().show()

如果您直接将CSV读入Dynamic Dataframe,您可以使用withHeader连接选项:

dfs3 = glueContext.create_dynamic_frame_from_options(connection_type = "s3", connection_options = {"paths": ["s3://rd-mb3/headertest/"]}, format="csv", format_options = {"withHeader": True})
dfs3.toDF().show()

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则