Apache spark AWS Glue-从目录而不是数据源标题派生架构
我在AWS Glue Catalog中创建了一个指向S3位置的表。我使用AWS Glue ETL读取S3位置中的任何新文件。数据文件将第一条记录作为标题。但是,在S3中有时会删除一个没有数据和头的空文件。由于文件也没有任何头信息,这会导致我的ETL作业失败,并说“无法解析给定的输入列” 我的问题是,有没有一种方法不从文件头读取模式,而只是从AWS Glue目录读取模式。我已经在目录中定义了模式。我仍然希望在读取数据文件时跳过第一行,但不将其视为标题 下面是我正在尝试的代码-Apache spark AWS Glue-从目录而不是数据源标题派生架构,apache-spark,aws-glue,aws-glue-data-catalog,Apache Spark,Aws Glue,Aws Glue Data Catalog,我在AWS Glue Catalog中创建了一个指向S3位置的表。我使用AWS Glue ETL读取S3位置中的任何新文件。数据文件将第一条记录作为标题。但是,在S3中有时会删除一个没有数据和头的空文件。由于文件也没有任何头信息,这会导致我的ETL作业失败,并说“无法解析给定的输入列” 我的问题是,有没有一种方法不从文件头读取模式,而只是从AWS Glue目录读取模式。我已经在目录中定义了模式。我仍然希望在读取数据文件时跳过第一行,但不将其视为标题 下面是我正在尝试的代码- datasource
datasource1 = glueContext.create_dynamic_frame.from_catalog(database = "db", table_name = "test", transformation_ctx = "datasource1")
datasource1DF = datasource1.toDF()
datasource1DF.select(col('updatedtimestamppdt')).show()
错误-
无法执行第1行:
数据源1df.orderBy(col('updatedtimestamppdt'),
升序=False)。选择(列('updatedtimestamppdt')).distinct().show()
回溯(最近一次调用上次):文件
“/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py”,第63行,
装饰
返回f(*a,**kw)文件“/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py”,行
328,在get_返回_值中
格式(target_id,“.”,name),值)py4j.protocol.Py4JJavaError:调用o1616.sort时出错:
org.apache.spark.sql.AnalysisException:无法解析
给定的输入列:[];“updatedtimestamppdt
”
您是否尝试过…(只要您选中了将胶水目录显示为蜂巢元存储的框)
df=spark.sql('select*from yourluedatabase.yourluetable')您是否尝试过…(只要您选中了将胶水目录公开为配置单元元存储的框)
df=spark.sql('从yourgluedatabase.yourgluetable'中选择*)