Spark 数据集:Table 数据与创建它的视图不完全相同
Spark Dataset: Table data not exactly same as of view from which it s created
我的代码与此完全相似。此处仅更改变量和 table 名称。打字时请忽略任何语法错误。原始代码编译成功。
------代码------
Dataset<Row> test = sqlContext.sql("select * from test_table");
test.createOrReplaceTempView("temp_view_test");
sqlContext.sql("drop table if exist new_table");
sqlContext.sql("create table new_table as select * from temp_view_test");
//Code to print counts
//count if dataset
System.out.println("test count:"+test.count());
//count of temp view
Dataset<Row> tempViewTestData = sqlContext.sql("select * from temp_view_test");
System.out.println("temp view count: "+tempViewTestData.count());
//count of newly created table
Dataset<Row> newTableData = sqlContext.sql("select * from new_table");
System.out.println("New Table count: "+newTableData .count());
-----输出----
测试count:9422720
临时观看次数:9422720
新 Table 计数:9520364
-----问题-----
我的问题是为什么新 table 的计数与临时视图的计数不同。我应该怎么做才能使两个计数相同。
终于找到解决办法了。这是因为数据集中存在日语字符。如果出现类似问题,可以考虑这个。
我的代码与此完全相似。此处仅更改变量和 table 名称。打字时请忽略任何语法错误。原始代码编译成功。
------代码------
Dataset<Row> test = sqlContext.sql("select * from test_table");
test.createOrReplaceTempView("temp_view_test");
sqlContext.sql("drop table if exist new_table");
sqlContext.sql("create table new_table as select * from temp_view_test");
//Code to print counts
//count if dataset
System.out.println("test count:"+test.count());
//count of temp view
Dataset<Row> tempViewTestData = sqlContext.sql("select * from temp_view_test");
System.out.println("temp view count: "+tempViewTestData.count());
//count of newly created table
Dataset<Row> newTableData = sqlContext.sql("select * from new_table");
System.out.println("New Table count: "+newTableData .count());
-----输出----
测试count:9422720 临时观看次数:9422720 新 Table 计数:9520364
-----问题-----
我的问题是为什么新 table 的计数与临时视图的计数不同。我应该怎么做才能使两个计数相同。
终于找到解决办法了。这是因为数据集中存在日语字符。如果出现类似问题,可以考虑这个。