我正在对Hive
. 计算速度足够快,但我在Hive
. 我的结果集接近一千万条记录,将它们写入表需要几分钟。我已经尝试过缓存表和各种文件格式(ORC
AND RC
),但没有看到任何性能改进。
索引是不可能的,因为我正在使用Shark
. 很高兴了解 SO 社区关于我可以尝试提高写入性能的各种方法的建议。
谢谢,TM
我正在对Hive
. 计算速度足够快,但我在Hive
. 我的结果集接近一千万条记录,将它们写入表需要几分钟。我已经尝试过缓存表和各种文件格式(ORC
AND RC
),但没有看到任何性能改进。
索引是不可能的,因为我正在使用Shark
. 很高兴了解 SO 社区关于我可以尝试提高写入性能的各种方法的建议。
谢谢,TM
我并没有真正使用鲨鱼,因为它已被弃用,但我相信它能够像 spark SQL 一样读取和写入 parquet 文件。在 spark SQL 中它是微不足道的(来自网站):
val people: RDD[Person] = ... // An RDD of case class objects, from the previous example.
// The RDD is implicitly converted to a SchemaRDD, allowing it to be stored using Parquet.
people.saveAsParquetFile("people.parquet")
// Read in the parquet file created above. Parquet files are self-describing so the schema is preserved.
// The result of loading a Parquet file is also a JavaSchemaRDD.
val parquetFile = sqlContext.parquetFile("people.parquet")
基本上 parquet 是在不考虑其他框架的情况下提高 IO 速度的最佳选择(impala应该非常快,但查询更加有限)。这是因为如果您有一个包含许多行的表,parquet 只允许您反序列化所需的行,因为它以列格式存储。此外,反序列化可能比普通存储更快,因为将相同类型的数据彼此相邻存储在内存中可以提供更好的压缩率。此外,正如我在评论中所说,升级到 spark SQL 将是一个好主意,因为不再支持鲨鱼,而且我不相信在语法方面有太大差异。