2017-07-06 14 views
3

elasticsearch-sparkのesRDD("index")関数を使用してelasticsearchからデータを読み込もうとすると、結果はorg.apache.spark.rdd.RDD[(String, scala.collection.Map[String,AnyRef])]になります。そして私が値をチェックするとき、それらはすべてタイプAnyRefです。 SPARKでelasticsearch-sparkを使用してデータを読み込むときにタイプを変換する方法

elasticsearch-のHadoopは、自動的に組み込み型(バック)をElasticsearchするタイプのスパークを変換私の依存関係は次のとおりです:しかし、私はそれを言う、ES site上で見た

scalaVersion := "2.11.8" 
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0" 
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.1.0" 
libraryDependencies += "org.apache.spark" %% "spark-mllib" % "2.1.0" 
libraryDependencies += "org.elasticsearch" % "elasticsearch-spark-20_2.11" % "5.4.0" 

私は何かが恋しいですか?そして、私はどのように便利な方法で型を変換できますか?

+0

es 5.4でspark 2を使用している場合は、なぜRDDを読んでいますか? – eliasah

+0

@eliasah公式の文書では、それはrdd .... nvmを使用するので、今私はどのように行うのか知っています。 Thx – PC9527

+0

解決策を見つけた場合は、解決策を他の人と共有して受け入れてください:) – eliasah

答えて

1

OK、解決策が見つかりました。 esRDDを使用すると、すべての種類の情報が失われます。
我々が使用している場合は、より良いです:あなたが前にそれを行っている場合

val df = sparkSession.read.format("org.elasticsearch.spark.sql").option("es.read.field.as.array.include", "").load("index") 

あなたはコンフィグES optionで、optionは無視することができますすることができます。

データreturendはDataFrameであり、データ・タイプがあれば変換はelasticsearch-sparkによって支持されているように、スキーマ内(sql.DataTypes換算)に保存されています。

これで、あなたは何でもできます。

関連する問題