質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Spark

Spark(Apache Spark)とは、膨大なデータを迅速、柔軟に分散並行処理を行うフレームワークです。分析ツールであるApache Hadoopと比較し、最大で100倍の速度でデータ処理ができるとされています。

Q&A

解決済

1回答

1984閲覧

DataFrameからSQLで値のみを取得する方法

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Spark

Spark(Apache Spark)とは、膨大なデータを迅速、柔軟に分散並行処理を行うフレームワークです。分析ツールであるApache Hadoopと比較し、最大で100倍の速度でデータ処理ができるとされています。

0グッド

1クリップ

投稿2018/06/25 10:30

編集2018/06/25 10:32

お世話になっております。

YYYYMMDDでパーティション分割したデータがあります。
これを DataFrame に登録してパーティションの情報をSQLで取得し、
パーティション情報をリストとして後続の処理で利用したいと考えています。

#読み込み partitioninfo = spark.read.csv(PartitionPath, header=False, encoding='utf-8', sep="\t") #SQLアクセスのため一時テーブルへ dfPartitionInfo.registerTempTable("partition_info") #SQLでリスト抽出 partitionList=sqlContext.sql("select distinct p_ymd from partition_info where p_ymd >= '" + BeforeYmd + "' and p_ymd <= '" + AfterYmd + "'" ) #ループ処理 for Part in partitionList: ・・・・・ ・・・・・

上の方法で定義したデータを show でみると以下のように登録されているのですが、
値のみを取得する方法がわかりません。

>>> partitionList.show() +--------------+ <-- 不要 | p_ymd | <-- 不要 +--------------+ <-- 不要 |20180401000000| <-- 値のみ必要 |20180402000000| <-- 値のみ必要 |20180403000000| <-- 値のみ必要 |20180404000000| <-- 値のみ必要 |20151001000000| <-- 値のみ必要 |20160401000000| <-- 値のみ必要 +--------------+

値だけを取得する方法をご教示いただきたく、お願いいたします。
SQLを使っていますが、要件が満たせるのであればSQLの利用にはこだわっていません。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Spark触ったことないので憶測回答です。

Dataframeから列を取り出す

特定の列を取り出すには、df.select("userID").map(lambda x: x[0]).collect()で、"userID"列のList(not RDD/Dataframe)が取り出せる

とあるので、以下のようにしてリストに変換することで目的が果たせないでしょうか?

Python

1partList = partitionList.select('p_ymd').map(lambda x: x[0]).collect() 2for part in partList: 3 print(part)

投稿2018/06/26 09:58

can110

総合スコア38268

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/06/27 00:36 編集

ありがとうございます。 DataFrameは2.x以降mapがなくなっているため、RDDで取得できることを確認しました。 ``` partList = partitionList.select('p_ymd').rdd.map(lambda x: x[0]).collect() >>> print(partList) [20180401000000, 20151001000000, 20160401000000] ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問