我能够提取DF的数据类型(从CSV文件创建的DF)。
当我在dataproc中尝试同样的方法时,所有的数据类型都是"string“。我可以在这里得到任何帮助:
在本地机器上为我工作的代码。
df = spark.read.option("header","true").option("inferSchema","true").csv("Path")
colList=df.columns
d=df.dtypes
print(d)
b=[]
for x in d:
b.append(x[1])
print(b)
df1=sc.parallelize([b]).toDF(colList)
c=df1.show()
print(c)所需输出和预期输出相同
UNIFICATION_ID|EMPLID|ACAD_CAREER|STDNT_CAR_NBR|ADM_APPL_NBR|
+--------------+------+-----------+-------------+------------+
| string|string| string| int| int|
+--------------+------+-----------+-------------+------------+如果我在Google Dataproc中运行相同的代码,我会得到输出。
UNIFICATION_ID|EMPLID|ACAD_CAREER|STDNT_CAR_NBR|ADM_APPL_NBR|
+--------------+------+-----------+-------------+------------+
| string|string| string| string | string |
+--------------+------+-----------+-------------+------------+发布于 2019-12-23 17:43:48
我一直在尝试重现您的问题,问题可能出在CSV格式中。
我尝试在下一个CSV示例中重现这个问题,我可以在Cloud Shell和Dataproc中找到不同类型的Sample insurance portfolio,并且您的代码似乎没有问题。
我在这里附加了通过Dataproc运行作业的结果:

尽管如此,我还是建议您查看一下上传到您的云存储Bucket中的CSV格式。
您还可以尝试使用我提供的CSV示例运行作业,以查看它是否真的是Dataproc或您的CSV格式的问题。
我希望这能帮到你。
https://stackoverflow.com/questions/59320268
复制相似问题