4

SparkR バージョン 1.4.0 でテキスト ファイルを読み取る方法を知っている人はいますか? そのために利用できる Spark パッケージはありますか?

4

3 に答える 3

3

スパーク 1.6+

入力形式を使用textして、テキストファイルを次のように読み取ることができますDataFrame

read.df(sqlContext=sqlContext, source="text", path="README.md")

スパーク <= 1.5

簡単に言えば、そうではありません。SparkR 1.4 は、低レベル API からほぼ完全に取り除かれ、データ フレーム操作の限られたサブセットのみが残されています。古いSparkR Webページで読むことができるように:

2015 年 4 月の時点で、SparkR は正式に Apache Spark に統合され、次のリリース (1.4) で出荷されます。(...) R での Spark の初期サポートは、低レベルの ETL ではなく高レベルの操作に焦点を当てます。

おそらく最も近いのは、次を使用してテキスト ファイルをロードすることですspark-csv

> df <- read.df(sqlContext, "README.md", source = "com.databricks.spark.csv")
> showDF(limit(df, 5))
+--------------------+
|                  C0|
+--------------------+
|      # Apache Spark|
|Spark is a fast a...|
|high-level APIs i...|
|supports general ...|
|rich set of highe...|
+--------------------+

mapflatMapreduceまたはなどの典型的なRDD操作filterも同様になくなっているため、とにかくそれがおそらくあなたが望むものです。

現在、低レベルの API はまだ下にあるので、いつでも以下のようなことを行うことができますが、それが良い考えであるとは思えません。SparkR の開発者には、おそらく非公開にする正当な理由がありました。:::マニュアルページを引用するには:

コードで「:::」を使用するのは通常、設計ミスです。これは、対応するオブジェクトが正当な理由で内部に保持されている可能性があるためです。単なる検査以外の目的でオブジェクトにアクセスする必要がある場合は、パッケージ管理者に連絡することを検討してください。

優れたコーディング プラクティスを無視しても構わないとしても、時間をかける価値はほとんどありません。1.4 より前の低レベル API は、恥ずかしいほど遅くてぎこちなく、Catalyst オプティマイザーの優れた点がなければ、内部 1.4 API に関してはおそらく同じです。

> rdd <- SparkR:::textFile(sc, 'README.md')
> counts <- SparkR:::map(rdd, nchar)
> SparkR:::take(counts, 3)

[[1]]
[1] 14

[[2]]
[1] 0

[[3]]
[1] 78

spark-csvは異なりtextFile、 は空行を無視します。

于 2015-07-01T18:23:50.230 に答える