4

SparkSQLを使用してHiveテーブルにアクセスするためのコードを記述しました。コードは次のとおりです。Spark Rowのデータセットを文字列に変換するには?

SparkSession spark = SparkSession 
     .builder() 
     .appName("Java Spark Hive Example") 
     .master("local[*]") 
     .config("hive.metastore.uris", "thrift://localhost:9083") 
     .enableHiveSupport() 
     .getOrCreate(); 
Dataset<Row> df = spark.sql("select survey_response_value from health").toDF(); 
df.show(); 

完全な出力を文字列または文字列配列に変換する方法を知りたいですか?私はStringまたはString型の配列値を渡すことができる別のモジュールで作業しようとしています。
.toStringのような他のメソッドを試したり、文字列値に型変換したりしました。しかし、私のために働いていない。
DataSet値をStringに変換する方法を教えてください。

答えて

6

ここはJavaのサンプルコードです。

public class SparkSample { 
    public static void main(String[] args) { 
     SparkSession spark = SparkSession 
      .builder() 
      .appName("SparkSample") 
      .master("local[*]") 
      .getOrCreate(); 
    //create df 
    List<String> myList = Arrays.asList("one", "two", "three", "four", "five"); 
    Dataset<Row> df = spark.createDataset(myList, Encoders.STRING()).toDF(); 
    df.show(); 
    //using df.as 
    List<String> listOne = df.as(Encoders.STRING()).collectAsList(); 
    System.out.println(listOne); 
    //using df.map 
    List<String> listTwo = df.map(row -> row.mkString(), Encoders.STRING()).collectAsList(); 
    System.out.println(listTwo); 
    } 
} 

"row"はjava 8ラムダパラメータです。確認してくださいdeveloper.com/java/start-using-java-lambda-expressions.html

+0

プログラムでこの '行'は何ですか?あなたのコードは私にはかなり最適に見えます。 –

+0

"row"はjava 8ラムダパラメータです。 http://www.developer.com/java/start-using-java-lambda-expressions.html – abaghel

+0

をチェックしてください。ありがとう。 –

4

あなたは例えば、文字列にすべての行を変換するmap機能を使用することができます。

df.map(row => row.mkString()) 

だけではなくmkStringあなたはもちろん、より高度な作業を行うことができます

collect方法その後、盗んことができます全体を配列にする

val strings = df.map(row => row.mkString()).collect 

(これはScalaの構文ですが、私はJavaではかなりシンプルですmilar)

+0

うまくいかなかった、私の友人。 Scalaの代わりにJavaを手伝ってもらえますか?私は構文が少し似ていることは知っていますが、Scalaの代わりにjavaを使用している間に他の問題があります。 –

+1

@Jaffer Java8構文は非常によく似ているはずです –

+0

@ cricket_007助けていただきありがとうございます。それは助けになった。 –

関連する問題