一尘不染

如何将Spark Row的数据集转换为字符串?

java

我已经编写了使用SparkSQL访问Hive表的代码。这是代码:

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数组?当我尝试与另一个只能传递String或String type Array值的模块一起使用时。
我试过其他方法,例如将.toString类型转换为字符串值或将其转换为字符串值。但是没有为我工作。
请让我知道如何将DataSet值转换为String?


阅读 644

收藏
2020-12-03

共1个答案

一尘不染

这是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 lambda参数。请检查developer.com/java/start-using-java-lambda-
expressions.html

2020-12-03