Jaf*_*son 7 java string apache-spark apache-spark-sql apache-spark-dataset
我编写了使用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();
Run Code Online (Sandbox Code Playgroud)
我想知道如何将完整输出转换为String或String数组?因为我正在尝试使用另一个模块,只有我可以传递String或String类型的Array值.
我已经尝试过其他类似的方法.toString
或类型转换为String值.但是对我没有用.
请告诉我如何将DataSet值转换为String?
aba*_*hel 13
这是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);
}
}
Run Code Online (Sandbox Code Playgroud)
"row"是java 8 lambda参数.请查看developer.com/java/start-using-java-lambda-expressions.html
您可以使用该map
函数将每一行转换为字符串,例如:
df.map(row => row.mkString())
Run Code Online (Sandbox Code Playgroud)
而不仅仅是mkString
你可以做更复杂的工作
collect
然后,该方法可以将整个事物检索到数组中
val strings = df.map(row => row.mkString()).collect
Run Code Online (Sandbox Code Playgroud)
(这是Scala语法,我认为在Java中它非常相似)
归档时间: |
|
查看次数: |
32916 次 |
最近记录: |