Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark AWS Glue-从目录而不是数据源标题派生架构_Apache Spark_Aws Glue_Aws Glue Data Catalog - Fatal编程技术网

Apache spark 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

我在AWS Glue Catalog中创建了一个指向S3位置的表。我使用AWS Glue ETL读取S3位置中的任何新文件。数据文件将第一条记录作为标题。但是,在S3中有时会删除一个没有数据和头的空文件。由于文件也没有任何头信息,这会导致我的ETL作业失败,并说“无法解析给定的输入列”

我的问题是,有没有一种方法不从文件头读取模式,而只是从AWS Glue目录读取模式。我已经在目录中定义了模式。我仍然希望在读取数据文件时跳过第一行,但不将其视为标题

下面是我正在尝试的代码-

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'中选择*)