我想创建一个使用Spark在HDFS中查询数据的Java应用程序。到目前为止,我已经通过两种方式对此进行了测试: - 对Thrift服务器公开的JDBC端点进行SQL查询(以默认配置启动) - 使用spark数据集api
我的问题是,对于hadoop / spark来说是全新的,两种方式中哪一种最有效,更容易设置(没有默认配置)?
从我理解到现在,使用Thrift服务器需要配置和维护Thrift和Hive。另一方面,我希望使用数据集API会更慢并且有更多限制,将数据保存在内存中。
答案 0 :(得分:1)
thrift服务器确实需要稍微多一点的配置,并且需要一个hive Metastore来保存表定义,你可以使用sql查询所有内容。在一天结束时,运行thrift服务器查询和使用无类型数据集api的查询之间的性能基本相同,从功能上来说,您可以更灵活地使用数据集api。由于codegen吐出坏代码(特别是pre-spark 2.2),强类型数据集apis的性能低于无类型数据集api。