【发布时间】:2021-06-29 13:45:14
【问题描述】:
我无法在 pyspark 中将 RDD 数据转换为 Dataframe。
这是我写的代码。
from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, DoubleType, Row
from pyspark.sql import *
spark = SparkSession \
.builder \
.appName("pyspark") \
.master("local[3]") \
.getOrCreate()
empdata = spark.sparkContext.textFile("/FileStore/tables/empdatarevised.txt").map(lambda x: x.split(","))
schema = StructType([
StructField("eid",IntegerType(),True),
StructField("ename",StringType(),True),
StructField("edept",StringType(),True),
StructField("esal", IntegerType(), True),
StructField("revsal", DoubleType(), True),
])
df = spark.createDataFrame(data=empdata,schema=schema)
df.show()
我收到了错误
org.apache.spark.SparkException:作业因阶段失败而中止:阶段 5.0 中的任务 0 失败 1 次,最近失败:阶段 5.0 (TID 7) 中丢失任务 0.0 (ip-10-172-239- 64.us-west-2.compute.internal executor driver): org.apache.spark.api.python.PythonException: 'TypeError: field eid: IntegerType can't accept object '100' in type
' .完整的追溯如下:
我知道这可以通过spark.read.format("csv").load("file.txt") 完成,但我的意图是使用 StructType 将 RDD 转换为 Dataframe。
寻求您的帮助。
提前致谢。
【问题讨论】:
标签: apache-spark pyspark rdd