我从Parquet文件创建一个DataFrame,如下所示:
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 as pd
然后将data_df
转换为Pandas DataFrame,然后使用unique()
。
但我怎么能用Java做呢?
答案 0 :(得分:2)
非常简单,您可以在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|
+------+
希望这个帮助,Best Regrads
答案 1 :(得分:1)
您可以删除重复项并通过
获取distinct
值
parquetFile.dropDuplicates("field1")
这只为distinct
field1
行
答案 2 :(得分:1)
DataFrame uniqueDF = data_df.groupBy("field1");
uniqueDF.show();