質問: 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の利用にはこだわっていません。 よろしくお願いいたします。
回答: Spark触ったことないので憶測回答です。 Dataframeから列を取り出す > > 特定の列を取り出すには、df.select("userID").map(lambda x: x[0]).collect()で、"userID"列のList(not RDD/Dataframe)が取り出せる > > > とあるので、以下のようにしてリストに変換することで目的が果たせないでしょうか? ``` partList = partitionList.select('p_ymd').map(lambda x: x[0]).collect() for part in partList: print(part) ```