タグ付けされた質問 「pyspark」

Spark Python API(PySpark)は、Apache-sparkプログラミングモデルをPythonに公開します。

13
pysparkのデータフレーム列名を変更するにはどうすればよいですか?
私はパンダの背景から来ており、CSVファイルからデータフレームにデータを読み取り、次に単純なコマンドを使用して列名を便利なものに変更することに慣れています: df.columns = new_column_name_list ただし、sqlContextを使用して作成されたpysparkデータフレームでは同じことが機能しません。これを簡単に行うために私が理解できる唯一の解決策は次のとおりです。 df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', inferschema='true', delimiter='\t').load("data.txt") oldSchema = df.schema for i,k in enumerate(oldSchema.fields): k.name = new_column_name_list[i] df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', delimiter='\t').load("data.txt", schema=oldSchema) これは基本的に変数を2回定義し、最初にスキーマを推論してから列名を変更し、更新されたスキーマでデータフレームを再度ロードします。 私たちがパンダのようにこれを行うためのより良い、より効率的な方法はありますか? 私のスパークバージョンは1.5.0です

2
ScalaとPythonのSparkパフォーマンス
ScalaよりPythonの方が好きです。しかし、SparkはScalaでネイティブに記述されているため、明らかな理由により、コードがPythonバージョンよりもScalaで高速に実行されることを期待していました。 その前提で、1 GBのデータ用の非常に一般的ないくつかの前処理コードのScalaバージョンを学び、書くことを考えました。データはKaggleのSpringLeafコンテストから選択されます。データの概要を説明するだけです(1936のディメンションと145232の行が含まれています)。データは、int、float、string、booleanなどのさまざまなタイプで構成されます。Spark処理には8つのうち6つのコアを使用しています。そのminPartitions=6ため、すべてのコアに処理対象があるように使用しました。 Scalaコード val input = sc.textFile("train.csv", minPartitions=6) val input2 = input.mapPartitionsWithIndex { (idx, iter) => if (idx == 0) iter.drop(1) else iter } val delim1 = "\001" def separateCols(line: String): Array[String] = { val line2 = line.replaceAll("true", "1") val line3 = line2.replaceAll("false", "0") val vals: Array[String] = line3.split(",") …

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 = …

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 …

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ベクターに基づく)を追加するにはどうすればよいですか?

19
Pythonシェルでのpysparkのインポート
これは回答されなかった別のフォーラムでの誰かの質問のコピーです。同じ問題があるので、ここでもう一度質問すると思います。(http://geekple.com/blogs/feeds/Xgzu7/posts/351703064084736を参照してください) 私のマシンにはSparkが正しくインストールされており、Pythonインタープリターとして./bin/pysparkを使用すると、pysparkモジュールを使用してpythonプログラムをエラーなしで実行できます。 ただし、通常のPythonシェルを実行しようとすると、pysparkモジュールをインポートしようとすると、次のエラーが発生します。 from pyspark import SparkContext そしてそれは言う "No module named pyspark". どうすれば修正できますか?Pythonがpysparkヘッダー/ライブラリ/その他を指すように設定する必要がある環境変数はありますか?Sparkのインストールが/ spark /の場合、どのpysparkパスを含める必要がありますか?または、pysparkプログラムはpysparkインタープリターからのみ実行できますか?

12
SparkでCSVファイルを読み込む
Sparkを初めて使用し、SparkでファイルからCSVデータを読み取ろうとしています。これが私がやっていることです: sc.textFile('file.csv') .map(lambda line: (line.split(',')[0], line.split(',')[1])) .collect() この呼び出しでファイルの最初の2列のリストが表示されると思いますが、次のエラーが発生します。 File "<ipython-input-60-73ea98550983>", line 1, in <lambda> IndexError: list index out of range 私のCSVファイルは複数の列として。

8
Spark DataFrame列をPythonリストに変換する
私は、mvvとcountの2つの列を持つデータフレームで作業します。 +---+-----+ |mvv|count| +---+-----+ | 1 | 5 | | 2 | 9 | | 3 | 3 | | 4 | 1 | mvv値とカウント値を含む2つのリストを取得したいと思います。何かのようなもの mvv = [1,2,3,4] count = [5,9,3,1] だから、私は次のコードを試してみました:最初の行は行のpythonリストを返すはずです。私は最初の値を見たかった: mvv_list = mvv_count_df.select('mvv').collect() firstvalue = mvv_list[0].getInt(0) しかし、2行目にエラーメッセージが表示されます。 AttributeError:getInt

4
Spark Kill Runningアプリケーション
他のアプリケーションがリソースを割り当てられないすべてのコアを占有する実行中のSparkアプリケーションがあります。 私はいくつかの簡単な調査を行い、人々はYARN killまたは/ bin / spark-classを使用してコマンドをkillすることを提案しました。しかし、私はCDHバージョンを使用していて、/ bin / spark-classもまったく存在せず、YARN killアプリケーションも機能しません。 これで誰でも私と一緒にできますか?

5
pysparkでDataframe列をString型からDouble型に変更する方法
文字列として列を持つデータフレームがあります。PySparkで列タイプをDoubleタイプに変更したいと思いました。 以下は私がやった方法です: toDoublefunc = UserDefinedFunction(lambda x: x,DoubleType()) changedTypedf = joindf.withColumn("label",toDoublefunc(joindf['show'])) 知りたいだけですが、これはロジスティック回帰を実行しているときにエラーが発生するので正しい方法ですか?これが問題の原因です。

10
値がNoneのPysparkデータフレーム列をフィルター処理する
None行の値を持つPySparkデータフレームをフィルタリングしようとしています: df.select('dt_mvmt').distinct().collect() [Row(dt_mvmt=u'2016-03-27'), Row(dt_mvmt=u'2016-03-28'), Row(dt_mvmt=u'2016-03-29'), Row(dt_mvmt=None), Row(dt_mvmt=u'2016-03-30'), Row(dt_mvmt=u'2016-03-31')] 文字列値で正しくフィルタリングできます: df[df.dt_mvmt == '2016-03-31'] # some results here しかし、これは失敗します: df[df.dt_mvmt == None].count() 0 df[df.dt_mvmt != None].count() 0 しかし、各カテゴリーには確かに価値があります。どうしたの?

18
ドライバーのPythonバージョンをSparkに設定するにはどうすればよいですか?
私はspark1.4.0-rc2を使用しているので、sparkでpython3を使用できます。export PYSPARK_PYTHON=python3.bashrcファイルに追加すると、Python 3を使用してSparkをインタラクティブに実行できます。ただし、スタンドアロンプ​​ログラムをローカルモードで実行すると、エラーが発生します。 Exception: Python in worker has different version 3.4 than that in driver 2.7, PySpark cannot run with different minor versions ドライバーのPythonのバージョンを指定するにはどうすればよいですか?設定export PYSPARK_DRIVER_PYTHON=python3が機能しませんでした。

9
pysparkデータフレームに個別の列値を表示する:python
パンダの代わりのpysparkデータフレームを提案してくださいdf['col'].unique()。 pysparkデータフレーム列にすべての一意の値をリストしたいと思います。 SQLタイプの方法ではありません(registertemplate、次に個別の値のSQLクエリ)。 またgroupby->countDistinct、必要はありません。代わりに、その列の個別の値を確認したいと思います。

8
pysparkデータフレームの列を削除する方法
>>> a DataFrame[id: bigint, julian_date: string, user_id: bigint] >>> b DataFrame[id: bigint, quan_created_money: decimal(10,0), quan_created_cnt: bigint] >>> a.join(b, a.id==b.id, 'outer') DataFrame[id: bigint, julian_date: string, user_id: bigint, id: bigint, quan_created_money: decimal(10,0), quan_created_cnt: bigint] 2つid: bigintあり、1つ削除したい。どのようにできるのか?


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