Pyspark到Spark-scala转换

问题描述

资深开发者

我正在创建动态固定长度文件读取功能-模式将来自JSON文件: 我的代码语言是:scala,因为大多数现有代码已经用scala编写。

浏览时,我找到了我需要的确切代码,用pyspark编写。您能帮忙将其转换为相应的Spark-scala代码吗?特别是字典部分和循环部分

主要参考文献:Read fixed width file using schema from json file in pyspark

SchemaFile.json
===========================
{"Column":"id","From":"1","To":"3"}
{"Column":"date","From":"4","To":"8"}
{"Column":"name","From":"12","To":"3"}
{"Column":"salary","From":"15","To":"5"}

File = spark.read\
    .format("csv")\
    .option("header","false")\
    .load("C:\Temp\samplefile.txt")

SchemaFile = spark.read\
    .format("json")\
    .option("header","true")\
    .json('C:\Temp\schemaFile\schema.json')
    
sfDict = map(lambda x: x.asDict(),SchemaFile.collect())
print(sfDict)
#[{'Column': u'id','From': u'1','To': u'3'},# {'Column': u'date','From': u'4','To': u'8'},# {'Column': u'name','From': u'12',# {'Column': u'salary','From': u'15','To': u'5'}

from pyspark.sql.functions import substring
File.select(
    *[
        substring(
            str='_c0',pos=int(row['From']),len=int(row['To'])
        ).alias(row['Column']) 
        for row in sfDict
    ]
).show()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)