我加载JSON数据,并在动态dataframe上使用relationalize方法来展平嵌套的JSON对象,并将其保存为parquet格式。问题是,一旦保存为parquet格式以进行更快的Athena查询,列名就包含点,这与athenasql查询语法背道而驰,因此我无法进行特定于列的查询。你知道吗
为了解决这个问题,我还重命名了粘合作业中的列名,以排除点,并改为使用下划线。我的问题是这两种方法中哪一种更好,为什么?(效率-内存?节点执行速度?等等)。你知道吗
同样考虑到可怕的aws胶水文档,我不能想出一个动态的框架唯一的解决方案。我在以动态方式获取列名时遇到问题,因此我使用toDF()。你知道吗
1)第一种方法是从动态df中提取df中的列名
relationalize1 = Relationalize.apply(frame=datasource0, transformation_ctx="relationalize1").select("roottable")
df_relationalize1 = relationalize1.toDF()
for field in df_relationalize1.schema.fields:
relationalize1 = RenameField.apply(frame = relationalize1, old_name = "`"+field.name+"`", new_name = field.name.replace(".","_"), transformation_ctx = "renamefield_" + field.name)
2)第二种方法是从dynamic df中提取df,并对pyspark df(而不是dynamic df)执行rename字段,然后将其转换回dynamic df并以parquet格式保存。你知道吗
有更好的方法吗?爬虫可以重命名列吗?.fromDF()方法有多快?有没有比pdf开发人员指南更好的函数和方法文档?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐