我在这个网页上尝试了ML示例(IndexToString):http://spark.apache.org/docs/latest/ml-features.html#onehotencoder,使用jupyter notebook(运行Pyspark)创建一个简单的df(数据帧),并且我不断收到长错误消息。其中一条线说:
Py4JJavaError:调用o23.applySchemaToPythonRDD时发生错误。 :java.lang.RuntimeException:java.lang.RuntimeException:无法实例化org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
请帮助,这是否意味着我需要先建立一个RDD来构建一个DataFrame?此外,我尝试了MLlib方法,它工作正常,它是ML方法,一直给我错误。
答案 0 :(得分:0)
您使用的是哪个版本的火花?链接中的示例需要spark 2.0.0
在此链接中,您可以找到spark 1.6.2的示例 - 经过测试可以在我的机器上运行 http://spark.apache.org/docs/1.6.2/ml-features.html#onehotencoder
from pyspark.ml.feature import OneHotEncoder, StringIndexer
df = sqlContext.createDataFrame([
(0, "a"),
(1, "b"),
(2, "c"),
(3, "a"),
(4, "a"),
(5, "c")
], ["id", "category"])
stringIndexer = StringIndexer(inputCol="category", outputCol="categoryIndex")
model = stringIndexer.fit(df)
indexed = model.transform(df)
encoder = OneHotEncoder(dropLast=False, inputCol="categoryIndex", outputCol="categoryVec")
encoded = encoder.transform(indexed)
encoded.select("id", "categoryVec").show()