0
私が使用しているスパークバージョンは2.0+ です。これは、パイプ(|)で区切られた値ファイルをDataframeに読み込んだ後、SQLのようなクエリを実行することだけです。私はカンマで区切られたファイルも試しました。 私はspark-shellを使ってsparkと対話しています spark-csv jarをダウンロードし、spark-shellを--packagesオプションで実行してセッションにインポートしました。それは正常にインポートされました。spark psvファイルからデータフレームへの変換エラー
import spark.implicits._
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql._
val session =
SparkSession.builder().appName("test").master("local").getOrCreate()
val df = session.read.format("com.databricks.spark.csv").option("header", "true").option("mode", "DROPMALFORMED").load("testdata.txt");
WARN Hive: Failed to access metastore. This class should not accessed in runtime.
apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hi
at org.apache.hadoop.hive.ql.metadata.Hive.getAllDatabases(Hive.java:1236)
at org.apache.hadoop.hive.ql.metadata.Hive.reloadFunctions(Hive.java:174)
at org.apache.hadoop.hive.ql.metadata.Hive.<clinit>(Hive.java:166)
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:503)
at org.apache.spark.sql.hive.client.HiveClientImpl.<init>(HiveClientImpl.scala:171)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.apache.spark.sql.hive.client.IsolatedClientLoader.createClient(IsolatedClientLoader.scala:258)
at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:359)
at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:263)
at org.apache.spark.sql.hive.HiveSharedState.metadataHive$lzycompute(HiveSharedState.scala:39)
psvファイルをDataframeに直接ロードするというアイデアは、SQL上でクエリを実行できるようにするためです。私はRDDとして読み込み、解析してからデータフレームに変換することができますが、データフレームに直接インポートしたいのですが、なぜそうではないのでしょうか?必要な前処理がなく、データがパイプで区切られている場合。 – jane