我已配置数据SparkStreaming。我想将这些数据用于各种目标:
暴露Tableau(它需要thriftServer,而thriftServer 需要hiveContext)。
有时我希望能够更新一些数据。
HiveContext中的数据保存在哪里?在记忆中?在本地磁盘上?它是由thriftServer提供的吗?
答案 0 :(得分:1)
您可以通过执行以下操作将DataFrames从spark保存到hive表:
yourDataFrame.writer().mode(SaveMode.Append).saveAsTable("YourTableName")
如果要将数据插入现有表,可以使用:
hive-site.xml
这会将您的DataFrame保存在持久性Hive表中。此表的位置取决于/user/hive/warehouse/YourTableName
。
默认情况下,如果您在本地进行测试,该位置将位于hive.metastore.warehouse.dir
如果您在Yarn / HDFS上使用Spark with Hive,那么该表将保存在HDFS上hive-site.xml配置文件中属性{{1}}定义的位置
希望这会有所帮助:)
答案 1 :(得分:0)
您可以选择使用
在内存中缓存数据your_hive_context.cacheTable("表名&#34)
Thrift Server访问包含所有表的全局上下文,甚至是临时表。
如果缓存表Tableau将更快地获得查询结果,但您必须继续运行Spark Batch应用程序。
我没有找到更新某些数据的方法,而无需打开新的HiveContext。