nTypeError:无法合并类型 <class \'pyspark.sql.types.DoubleType\'> 和 <class \'pyspark.sql.types.Str

Posted

技术标签:

【中文标题】nTypeError:无法合并类型 <class \\\'pyspark.sql.types.DoubleType\\\'> 和 <class \\\'pyspark.sql.types.StringType\\\'>\\n\'【英文标题】:nTypeError: Can not merge type <class \'pyspark.sql.types.DoubleType\'> and <class \'pyspark.sql.types.StringType\'>\n'nTypeError:无法合并类型 <class \'pyspark.sql.types.DoubleType\'> 和 <class \'pyspark.sql.types.StringType\'>\n' 【发布时间】:2017-12-19 14:49:07 【问题描述】:

我正在使用 spark 1.6 并且正在运行以下代码:

def load(self, filename):        
    print "Loading input file " + filename
    inputpd = pd.read_csv('input/'+filename , dtype=str)

    inputpd = inputpd.round(4)
    inputpd = inputpd.drop(inputpd.columns[[0]], axis=1)
    df_input = self.sqlContext.createDataFrame(inputpd)
    return df_input

运行代码后出现类型错误:

Can not merge type &lt;class \'pyspark.sql.types.DoubleType\'&gt; and &lt;class \'pyspark.sql.types.StringType\'&gt;\n'

为了解决这个问题,我已经尝试过:

inputpd = (spark.read.format("csv").options(header="true").load('input/'+filename))

还有:

inputpd = sqlContext.read.format('com.databricks.spark.csv').options(header='true').load('input/'+filename)

但是两次我都得到错误 spark 或 sqlcontext not defined。请让我知道如何定义,因为我已经尝试过 import 语句。

【问题讨论】:

我已经解决了这个问题,但是现在我得到了错误:java.lang.ClassNotFoundException: Failed to find data source: com.databricks.spark.csv 如何使用 spark submit 命令解决这个问题? 【参考方案1】:

我尝试使用 pyspark 并且可以工作...

pyspark --packages com.databricks:spark-csv_2.11:1.5.0

见this one。

sqlContext.read.format('com.databricks.spark.csv').options(header='true').load("file:/home/..." + filename).collect()

【讨论】:

以上是关于nTypeError:无法合并类型 <class \'pyspark.sql.types.DoubleType\'> 和 <class \'pyspark.sql.types.Str的主要内容,如果未能解决你的问题,请参考以下文章

合并复制无法复制UD类型

TypeError:实例Python之间不支持'<'

不兼容的转换字符

JS - 无法合并 lib 文件

无法在 Spark 中合并两个 CassandraJavaRDD<CassandraRow>

java基础 合并两个类型相同的list