Java 如何在Spark中打印数据帧列的唯一值?

Java 如何在Spark中打印数据帧列的唯一值?,java,apache-spark,apache-spark-sql,Java,Apache Spark,Apache Spark Sql,我从拼花文件创建一个数据框,如下所示: DataFrame parquetFile = sqlContext.read().parquet("test_file.parquet"); parquetFile.printSchema(); parquetFile.registerTempTable("myData"); DataFrame data_df = sqlContext.sql("SELECT * FROM myData"); 现在,我想打印出一个名为field1的列的所有唯一值 我知

我从拼花文件创建一个数据框,如下所示:

DataFrame parquetFile = sqlContext.read().parquet("test_file.parquet");
parquetFile.printSchema();
parquetFile.registerTempTable("myData");
DataFrame data_df = sqlContext.sql("SELECT * FROM myData");
现在,我想打印出一个名为field1的列的所有唯一值

我知道在使用Python的情况下,可以将import pandas作为pd运行,然后将数据_df转换为pandas DataFrame,然后使用unique


但是我怎样才能用Java实现呢

您可以通过

parquetFile.dropDuplicates("field1")

这只按字段1提供不同的行。这非常简单,您可以在SQL查询中使用distinct函数

DataFrame data_df = sqlContext.sql("SELECT DISTINCT(field1) FROM myData");
下面是一个例子:

val myData = Seq("h", "h", "d", "b", "d").toDF("field1")
myData.createOrReplaceTempView("myData")
val sqlContext = spark.sqlContext
sqlContext.sql("SELECT DISTINCT(field1) FROM myData").show()
这将提供以下输出:

+------+                                                                        
|field1|
+------+
|     h|
|     d|
|     b|
+------+
希望有此帮助,最好的Regrads

GroupedData无法显示。您可能没有计数:data_df.groupBy'field1'.count.show
+------+                                                                        
|field1|
+------+
|     h|
|     d|
|     b|
+------+