在python中,字节字符串可以简单地保存到单个xml文件中:
with open('/home/user/file.xml' ,'wb') as f:
f.write(b'<Value>1</Value>')
当前输出:/home/user/file.xml(文件保存在本地文件中)
问题:如何将字符串保存到pyspark中hdfs上的xml文件:
预期输出:'hdfs://hostname:9000/file.xml“
背景:大量xml文件由第三方web API提供。我在pyspark建造了通往三角洲湖的ETL管道。数据由aiohttp异步提取,接下来我想在将spark数据帧保存到delta-lake之前使用spark-xml进行转换(需要pyspark)。我在寻找建造管道的最有效方法
github上的spark xml开发人员也提出了类似的问题。 https://github.com/databricks/spark-xml/issues/515
最新研究:
spark xml用作直接作为文本存储在磁盘或spark数据框上的输入xml文件
因此,我只能使用以下两个选项之一:
a)一些hdfs客户端(pyarrow、hdfs、aiohdfs)将文件保存到hdfs(hdfs上的文本文件格式不是很有效)
b)将数据加载到spark数据框以进行spark xml转换(delta lake的本机格式)
如果你有其他想法,请告诉我
不要被databricks spark xml文档误导,因为它们会导致使用未压缩的xml文件作为输入。这是非常低效的,直接下载XML到spark dataframe要快得多。Databricks xml pyspark版本不包括它,但有一个workaround:
下载到列表的XML
XML字符串的Spark数据帧转换:
要解码字节:b'string'。解码('utf-8')
@mck answer了解有关XMLs的更多信息: How to transform to spark Data Frame data from multiple nested XML files with attributes
相关问题 更多 >
编程相关推荐