タグ付けされた質問 「apache-spark」

Apache SparkはScalaで記述されたオープンソースの分散データ処理エンジンであり、統一されたAPIと分散データセットをユーザーに提供します。Apache Sparkの使用例は、多くの場合、機械/深層学習、グラフ処理に関連しています。

23
Spark SQLのDataFrameで列タイプを変更するにはどうすればよいですか?
私が次のようなことをしているとしましょう: val df = sqlContext.load("com.databricks.spark.csv", Map("path" -> "cars.csv", "header" -> "true")) df.printSchema() root |-- year: string (nullable = true) |-- make: string (nullable = true) |-- model: string (nullable = true) |-- comment: string (nullable = true) |-- blank: string (nullable = true) df.show() year make model comment blank 2012 …

8
カスタムオブジェクトをデータセットに保存する方法
Sparkデータセットの紹介によると: Spark 2.0を楽しみにして、特にデータセットにいくつかのエキサイティングな改善を計画します。...カスタムエンコーダー-現在、さまざまなタイプのエンコーダーを自動生成していますが、カスタムオブジェクトのAPIを開きたいと考えています。 カスタムタイプを保存しようとするとDataset、次のようなエラーが発生します: データセットに保存されているタイプのエンコーダーが見つかりません。プリミティブ型(Int、Stringなど)および製品型(ケースクラス)は、sqlContext.implicits._のインポートによってサポートされます。他の型のシリアル化のサポートは、将来のリリースで追加されます または: Java.lang.UnsupportedOperationException:...のエンコーダーが見つかりません 既存の回避策はありますか? この質問は、コミュニティWiki回答のエントリポイントとしてのみ存在することに注意してください。質問と回答の両方を自由に更新/改善してください。

15
SparkでINFOロギングをオフにする方法は?
AWS EC2ガイドを使用してSparkをインストールしました。bin/pysparkスクリプトを使用してプログラムを正常に起動し、sparkプロンプトを表示し、クイックスタートクワイエドを正常に実行することもできます。 ただし、私はINFO、各コマンドの後にすべての詳細ログを停止する方法を理解することができません。 各ノードからだけでなく、アプリケーションを起動するフォルダー内のlog4j.propertiesファイル内の以下のコード(コメントアウト、OFFに設定)でほぼすべての可能なシナリオを試しconfましたが、何も実行されていません。INFO各ステートメントを実行した後も、ログステートメントが出力されます。 私はこれがどのように機能することになっているのか非常に混乱しています。 #Set everything to be logged to the console log4j.rootCategory=INFO, console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.target=System.err log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n # Settings to quiet third party logs that are too verbose log4j.logger.org.eclipse.jetty=WARN log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO これが私が使用するときの私の完全なクラスパスSPARK_PRINT_LAUNCH_COMMANDです: Sparkコマンド:/ライブラリ/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/java -cp:/root/spark-1.0.1-bin-hadoop2/conf:/root/spark-1.0.1 -bin-hadoop2 / conf:/root/spark-1.0.1-bin-hadoop2/lib/spark-assembly-1.0.1-hadoop2.2.0.jar:/root/spark-1.0.1-bin-hadoop2/lib /datanucleus-api-jdo-3.2.1.jar:/root/spark-1.0.1-bin-hadoop2/lib/datanucleus-core-3.2.2.jar:/root/spark-1.0.1-bin-hadoop2 /lib/datanucleus-rdbms-3.2.1.jar -XX:MaxPermSize = 128m -Djava.library.path = …

8
各グループの最初の行を選択するにはどうすればよいですか?
次のように生成されたDataFrameがあります。 df.groupBy($"Hour", $"Category") .agg(sum($"value") as "TotalValue") .sort($"Hour".asc, $"TotalValue".desc)) 結果は次のようになります。 +----+--------+----------+ |Hour|Category|TotalValue| +----+--------+----------+ | 0| cat26| 30.9| | 0| cat13| 22.1| | 0| cat95| 19.6| | 0| cat105| 1.3| | 1| cat67| 28.5| | 1| cat4| 26.8| | 1| cat13| 12.6| | 1| cat23| 5.3| | 2| cat56| 39.6| | 2| …

3
Sparkでは、ステージはどのようにタスクに分割されますか?
以下では、すべての時点で1つのSparkジョブのみが実行されていると仮定します。 これまでに得たもの Sparkで何が発生するかを理解します。 ときにSparkContext作成され、各ワーカーノードは、executorを開始します。エグゼキューターは、ドライバープログラムに接続する個別のプロセス(JVM)です。各エグゼキュータは、ドライバプログラムのjarを持っています。ドライバーを終了すると、実行プログラムがシャットダウンされます。各エグゼキュータはいくつかのパーティションを保持できます。 ジョブが実行されると、系統グラフに従って実行計画が作成されます。 実行ジョブは複数のステージに分割され、ステージには(リネージュグラフで)隣接する変換とアクションがすべて含まれますが、シャッフルは含まれません。したがって、ステージはシャッフルによって分離されます。 という事は承知しています タスクは、Functionオブジェクトをシリアル化することによってドライバーからエグゼキューターに送信されるコマンドです。 エグゼキューターは、コマンド(タスク)を(ドライバーjarを使用して)逆シリアル化し、パーティションで実行します。 だが 質問 ステージをこれらのタスクに分割するにはどうすればよいですか? 具体的には: タスクは変換とアクションによって決定されますか、それとも複数の変換/アクションがタスクに含まれる可能性がありますか? タスクはパーティションによって決定されますか(パーティションごとのステージごとに1つのタスクなど)。 タスクはノードによって決定されますか(ノードごとのステージごとに1つのタスクなど)? 私が思うこと(たとえ正しいとしても、部分的な答えのみ) でhttps://0x0fff.com/spark-architecture-shuffle、シャッフルを画像で説明されています そして、私はルールが ノードの数に関係なく、各ステージは#number-of-partitionsタスクに分割されます 最初の画像では、3つのマップタスクと3つの縮小タスクがあると思います。 0x0fffからの画像の場合、8つのマップタスクと3つの削減タスクがあると思います(オレンジとダークグリーンのファイルが3つしかない場合)。 いずれにせよ未解決の質問 あれは正しいですか?しかし、それが正しいとしても、複数の操作(たとえば、複数のマップ)が1つのタスク内にあるか、操作ごとに1つのタスクに分かれているかに関わらず、上記の私の質問にはまだ回答がありません。 他の人が言うこと Sparkのタスクとは何ですか?Sparkワーカーはjarファイルをどのように実行しますか?そして、Apache Sparkスケジューラーはどのようにファイルをタスクに分割しますか?似ていますが、質問が明確に回答されているとは思いませんでした。
143 apache-spark 

14
Spark-CSVファイルをDataFrameとしてロードしますか?
私はスパークでCSVを読み取り、それをDataFrameとして変換し、HDFSに保存したいと思います df.registerTempTable("table_name") 私が試してみました: scala> val df = sqlContext.load("hdfs:///csv/file/dir/file.csv") 私が得たエラー: java.lang.RuntimeException: hdfs:///csv/file/dir/file.csv is not a Parquet file. expected magic number at tail [80, 65, 82, 49] but found [49, 59, 54, 10] at parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:418) at org.apache.spark.sql.parquet.ParquetRelation2$MetadataCache$$anonfun$refresh$6.apply(newParquet.scala:277) at org.apache.spark.sql.parquet.ParquetRelation2$MetadataCache$$anonfun$refresh$6.apply(newParquet.scala:276) at scala.collection.parallel.mutable.ParArray$Map.leaf(ParArray.scala:658) at scala.collection.parallel.Task$$anonfun$tryLeaf$1.apply$mcV$sp(Tasks.scala:54) at scala.collection.parallel.Task$$anonfun$tryLeaf$1.apply(Tasks.scala:53) at scala.collection.parallel.Task$$anonfun$tryLeaf$1.apply(Tasks.scala:53) at scala.collection.parallel.Task$class.tryLeaf(Tasks.scala:56) at scala.collection.parallel.mutable.ParArray$Map.tryLeaf(ParArray.scala:650) at …


2
Spark DataFrameに定数列を追加するにはどうすればよいですか?
DataFrame任意の値を持つ列を追加します(各行で同じです)。withColumn次のように使用するとエラーが発生します。 dt.withColumn('new_column', 10).head(5) --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-50-a6d0257ca2be> in <module>() 1 dt = (messages 2 .select(messages.fromuserid, messages.messagetype, floor(messages.datetime/(1000*60*5)).alias("dt"))) ----> 3 dt.withColumn('new_column', 10).head(5) /Users/evanzamir/spark-1.4.1/python/pyspark/sql/dataframe.pyc in withColumn(self, colName, col) 1166 [Row(age=2, name=u'Alice', age2=4), Row(age=5, name=u'Bob', age2=7)] 1167 """ -> 1168 return self.select('*', col.alias(colName)) 1169 1170 @ignore_unicode_prefix AttributeError: 'int' object …

6
Spark SQLで列を降順に並べ替える方法は?
試しましたdf.orderBy("col1").show(10)が、昇順でソートしました。df.sort("col1").show(10)また、降順で並べ替えます。私はstackoverflowを調べましたが、見つかった回答はすべて古くなっているか、RDDと呼ばれていました。スパークでネイティブデータフレームを使用したいと思います。

3
Apache Spark:マップvs mapPartitions?
RDD mapとmapPartitionsメソッドの違いは何ですか?そして、のようにflatMap動作しますか?ありがとう。mapmapPartitions (編集)つまり、(意味的にまたは実行に関して)違いは何ですか def map[A, B](rdd: RDD[A], fn: (A => B)) (implicit a: Manifest[A], b: Manifest[B]): RDD[B] = { rdd.mapPartitions({ iter: Iterator[A] => for (i <- iter) yield fn(i) }, preservesPartitioning = true) } そして: def map[A, B](rdd: RDD[A], fn: (A => B)) (implicit a: Manifest[A], b: Manifest[B]): RDD[B] = …

5
DataFrameのパーティションを定義するにはどうすればよいですか?
Spark 1.4.0でSpark SQLとDataFramesを使い始めました。ScalaのDataFrameでカスタムパーティショナーを定義したいのですが、その方法がわかりません。 私が使用しているデータテーブルの1つには、次の例のsilimarのトランザクションのリストがアカウントごとに含まれています。 Account Date Type Amount 1001 2014-04-01 Purchase 100.00 1001 2014-04-01 Purchase 50.00 1001 2014-04-05 Purchase 70.00 1001 2014-04-01 Payment -150.00 1002 2014-04-01 Purchase 80.00 1002 2014-04-02 Purchase 22.00 1002 2014-04-04 Payment -120.00 1002 2014-04-04 Purchase 60.00 1003 2014-04-02 Purchase 210.00 1003 2014-04-03 Purchase 15.00 少なくとも最初は、ほとんどの計算はアカウント内のトランザクション間で行われます。したがって、アカウントのすべてのトランザクションが同じSparkパーティションにあるように、データをパーティション化したいと思います。 しかし、私はこれを定義する方法を見ていません。DataFrameクラスには …

9
(PySparkを使用して)Spark DataFrameに新しい列を追加するにはどうすればよいですか?
Spark DataFrame(PySpark 1.5.1を使用)があり、新しい列を追加したいと思います。 私は成功せずに次のことを試しました: type(randomed_hours) # => list # Create in Python and transform to RDD new_col = pd.DataFrame(randomed_hours, columns=['new_col']) spark_new_col = sqlContext.createDataFrame(new_col) my_df_spark.withColumn("hours", spark_new_col["new_col"]) これを使用してもエラーが発生しました: my_df_spark.withColumn("hours", sc.parallelize(randomed_hours)) では、PySparkを使用して既存のDataFrameに新しい列(Pythonベクターに基づく)を追加するにはどうすればよいですか?

12
Apache Spark Executorメモリを設定する方法
Apache spark executorノードで使用可能なメモリーを増やすにはどうすればよいですか? Apache Sparkにロードするのに適した2 GBのファイルがあります。現時点では1台のマシンでApache Sparkを実行しているため、ドライバーとエグゼキューターは同じマシン上にあります。マシンには8 GBのメモリが搭載されています。 ファイルをメモリにキャッシュするように設定した後、ファイルの行を数えようとすると、次のエラーが発生します。 2014-10-25 22:25:12 WARN CacheManager:71 - Not enough space to cache partition rdd_1_1 in memory! Free memory is 278099801 bytes. 私はここでドキュメントを見て、設定spark.executor.memoryし4gました$SPARK_HOME/conf/spark-defaults.conf UIは、この変数がSpark環境で設定されていることを示しています。ここでスクリーンショットを見つけることができます ただし、[Executor]タブに移動しても、1つのExecutorのメモリ制限が265.4 MBに設定されています。私はまだ同じエラーが出ます。 ここで述べたさまざまなことを試してみましたが、それでもエラーが発生し、設定をどこで変更すればよいか明確にわかりません。 スパークシェルからインタラクティブにコードを実行しています

10
RDDの内容を印刷する方法は?
コレクションの内容をSparkコンソールに出力しようとしています。 タイプがあります: linesWithSessionId: org.apache.spark.rdd.RDD[String] = FilteredRDD[3] そして、私はコマンドを使用します: scala> linesWithSessionId.map(line => println(line)) しかし、これは印刷されます: res1:org.apache.spark.rdd.RDD [Unit] =マップされた:19のMappedRDD [4] RDDをコンソールに書き込んだり、内容を表示できるようにディスクに保存したりするにはどうすればよいですか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.