Spark 数据集:表数据与创建它的视图不完全相同

Posted

技术标签:

【中文标题】Spark 数据集:表数据与创建它的视图不完全相同【英文标题】:Spark Dataset: Table data not exactly same as of view from which it s created 【发布时间】:2017-10-10 05:53:16 【问题描述】:

我的代码与此完全相同。此处仅更改了变量和表名。请忽略输入过程中的任何语法错误。原代码编译成功。

--------代码------

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());

-----输出----

测试计数:9422720 临时观看次数:9422720 新表数:9520364

-----问题-----

我的问题是为什么新表的计数与临时视图的计数不同。我应该怎么做才能使这两个计数相同。

【问题讨论】:

【参考方案1】:

终于找到了解决办法。这是因为数据集中存在日文字符。如果出现类似问题,可以考虑这一点。

【讨论】:

以上是关于Spark 数据集:表数据与创建它的视图不完全相同的主要内容,如果未能解决你的问题,请参考以下文章

使用空数据集的Spark SQL连接会导致更大的输出文件大小

创建与 cifar-10 数据集格式相同的数据集

MySQL视图

BigQuery 视图可以引用来自不同数据集/项目的其他表和视图吗?

Mysql视图使用总结

创建具有相同名称但不同数据路径的多个临时表