作者回复: 棒棒棒!!!
作者回复: RDD[Row],RDD[String],都是RDD,但是元素类型不同,Row实际上是对象,Class,是带Schema的Tuple;而String就是字符串。
作者回复: 就是说,某个文件分区,其中的gender字段,最大值是male、最小值也是male,其实,这意味着文件里面的gender字段,都是male,没有female,所以,当查询中有where gender = “female”的时候,这个文件分区可以被直接跳过,不扫描、不产生磁盘I/O,从而提升文件读取效率~
作者回复: 其实入门课的4部分,深度都没有太深,主要是考虑确实有不少零基础的同学,需要照顾到~ 老弟有这种感觉,说明你Spark SQL的底子比较好,哈哈 性能篇的话,会深入很多,其实也是因为很多同学反馈性能篇难度偏高,我这边才会考虑出个入门篇,去满足不同同学的需求。 确实,入门篇对于不少同学来说,可能会偏浅,先跟老弟说声抱歉吧。不过也是好事,说明老弟在Spark这方面还是有不少积累的~
作者回复: 感谢老弟提醒~ 这里确实typo了,回头让编辑帮忙修改一下,感谢!
作者回复: 讲道理应该是没问题的,老弟check一下,是不是sql query里的表名字,没有带database前缀,就是像这样:“your_database.table_name”
作者回复: 问题同上,需要提供更多信息哈~
作者回复: 能给下上下文吗?SQL语句通过什么提交的?spark.sql() API?另外,这个表HaoDF_article,是createTempView来的,还是existing的Hive表? 再者,想问后面加了个WHERE 1=0,这个是手工加的,还是为了保证SQL语句,代码自动加的?
作者回复: spark.default.parallelism这个是RDD的默认并行度,比如你用parallelize创建RDD,默认并行度就是这个配置项的设置。 而numPartitions是RDD的属性之一,它指的是,当前RDD的并行度是多少~
作者回复: 可能原文说的不严谨,是的,你说的没错,应该在Action的地方才会抛运行时异常~ 毕竟Spark是Lazy evaluation,惰性计算,只有Action的时候,才会触发从头至尾的计算~