我已经配置了数据SparkStreaming。我想为各种目标保留此数据:
-
为 Tableau 公开(它需要 thriftServer,而 thriftServer需要蜂巢上下文)。
-
有时我希望能够更新一些数据。
数据保存在HiveContext中的什么位置?在记忆中?在本地磁盘上?它是由节俭服务器提供的吗?
可以通过执行以下操作将数据帧从 Spark 保存到 Hive 表: yourDataFrame.saveAsTable("YourTableName")
如果要将数据插入现有表,可以使用: yourDataFrame.writer().mode(SaveMode.Append).saveAsTable("YourTableName")
这会将数据帧保存在持久性 Hive 表上。 此表的位置将取决于hive-site.xml
中的配置。
默认情况下,如果在本地进行测试,则该位置将位于本地磁盘上的位置/user/hive/warehouse/YourTableName
如果您在 Yarn/HDFS 上使用 Spark 和 Hive,则表将保存在 HDFS 上,位于 Hive-site .xml配置文件中的属性hive.metastore.warehouse.dir
定义的位置上。
希望这对:)有所帮助
使用以下方法将数据缓存在内存上
your_hive_context.cacheTable("table_name")
Thrift 服务器访问包含所有表(甚至是临时表)的全局上下文。
如果缓存表,Tableau 将更快地获得查询结果,但您必须继续运行 Spark Batch 应用程序。
我还没有找到一种在不打开新的 HiveContext 的情况下更新某些数据的方法。