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

0

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

profile picture
EXPERTE
gefragt vor 6 Monaten12 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen