- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个要求要满足。我需要将数据从 DB sqoop 到 Hive。我每天都在 sqooping,因为这些数据每天都会更新。
此数据将用作来自 spark 消费者的查找数据以进行充实。我们想保留我们收到的所有数据的历史记录,但我们不需要所有数据来查找最新数据(同一天)。我正在考虑从历史表中创建一个配置单元 View ,并且只显示当天插入的记录。有没有一种方法可以每天自动执行 View ,以便 View 查询始终具有最新数据?
最佳答案
Q: Is there a way to automate the view on a daily basis so that the view query will always have the latest data?
如果您获得基于日期的分区表,则无需更新/自动化该过程。
Q: We want to keep a history of all the data we have received but we don't need all the data for lookup only the latest data (same day).
注意:无论是配置单元 View 还是配置单元表,您都应该始终避免扫描全表数据,也就是全表扫描以获取最新的分区数据。
选项 1:查询数据的配置单元方法
如果你想适应配置单元的方法
您必须使用分区列,例如:partition_date
和 hive 中的分区表
select * from table where partition_column in
(select max(distinct partition_date ) from yourpartitionedTable)
或
select * from (select *,dense_rank() over (order by partition_date desc) dt_rnk from db.yourpartitionedTable ) myview
where myview.dt_rnk=1
总是给出最新的分区。 (如果分区数据中有同一天或今天的日期,那么它会给出同一天的分区数据,否则它会给出最大 partition_date)及其来自分区表的数据。
选项 2:查询数据的普通 spark 方法使用 spark show partitions
命令,即 spark.sql(s"show Partitions $yourpartitionedtablename")
在数组中获取结果并对其进行排序以获得最新的分区日期。使用它,您可以使用 spark 组件仅查询最新的分区日期作为查找数据。
将我的回答视为 getting latest partition date. 的想法
I prefer option2 since no hive query is needed and no full table query since we are using show partitions command. and no performance bottle necks and speed will be there.
另一个不同的想法是使用 HiveMetastoreClient
或选项 2 进行查询...请参阅此和 my answer和 other
关于apache-spark - 每天自动更新一个 Hive View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57366415/
我可以将 CSV 或任何其他平面文件导入到 hive 中,而无需先在 hive 中创建和定义表结构吗?假设我的 csv 文件有 200 列,需要导入到 hive 表中。所以我必须首先在 hive 中创
我有以下示例数据,我试图在 hive 中爆炸它.. 我使用了 split 但我知道我错过了一些东西.. ["[[-80.742426,35.23248],[-80.740424,35.23184],[
我有一个很大的日志文件,我加载到 HDFS . HDFS将根据机架感知复制到不同的节点。 现在我将相同的文件加载到配置单元表中。命令如下: create table log_analysis (log
我正在尝试使用 UDF在 hive 中。但是当我尝试使用 userdate as 'unixtimeToDate' 创建一个临时函数时,我得到这个异常(exception) hive> create
在Mysql中,我们可以使用DO sleep(5) ;来进行暂停。但它在 Hive 中不起作用。 Hive有 sleep 功能吗? 最佳答案 你可以通过反射调用Thread让hive在处理每一行后多等
我正在将数据从 csv 文件导入 Hive。我的表包含字符串和整数。但是,在我的输入文件中,整数周围有空格,所以它看起来像这样: some string, 2 ,another stri
我可以嵌套吗select在 Hive 中具有不同的条件?例如 如果我有以下两个 Hive 查询: select percentile(x, 0.95) from t1 where y = 1; sel
hive 安装有什么特定的模式吗? 例如,Hadoop 安装有 3 种模式:独立、伪分布式和完全分布式。 同样,Hive 是否有任何特定类型的分布? Hive 可以分布式安装吗? 最佳答案 Hive
我正在使用 Hive,我有一个结构如下的表: CREATE TABLE t1 ( id INT, created TIMESTAMP, some_value BIGINT ); 我需要找到
我是 Hadoop 生态系统工具的新手。 任何人都可以帮助我了解 hive 、直线和 hive 之间的区别。 提前致谢! 最佳答案 Apache hive : 1] Apache Hive 是一个建立
如何在 Hive 中写出数组文字? SELECT PERCENTILE(my_column, [0.5, 0.25, 0.50, 0.75, 0.95]) AS quantiles FROM my_t
我正在尝试在Hive中重命名columnName。是否可以在Hive中重命名列名称。 tableA(栏1,_c1,_c2) 至 tableA(column1,column2,column3) ?? 最
减号查询似乎在 HIVE 中不起作用。 尝试过: select x from abc minus select x from bcd ; 我做错了还是没有为 HIVE 定义负查询?如果是这样,还有其他
我正在尝试使用 hive-jdbc 连接将数据插入 Hive (NON-ACID) 表。如果我在“语句”中执行单个 SQL 查询,它就可以工作。如果我尝试使用“addBatch”对 SQL 进行批处理
我知道这些, 要获取表中的列名,我们可以触发: show columns in . 要获取表的描述(包括 column_name、column_type 和许多其他详细信息): describe [f
无法找到有关 Hive 表最大字符限制的合适规范。 我正在开发一个涉及 hive 表的 ETL 过程,这些表已指定格式为 _ 的命名约定,并且提供的表名称远大于 30 字节(pl/sql 的正常限制)
在安装了Hive的集群中,metastore和namenode有什么?我了解 Metastore 拥有所有表架构、分区详细信息和元数据。现在这个元数据是什么?那么namenode有什么呢?这个元存储在
Hive 中静态分区和动态分区的主要区别是什么?使用单独的插入意味着静态,而对分区表的单个插入意味着动态。还有什么优点吗? 最佳答案 在静态分区中,我们需要在每个 LOAD 语句中指定分区列值。 假设
我是 hadoop 和 hive 的新手。如果有人研究过pivot in hive的概念,请与我分享。 例如:来自 teradata 或 oracle 的数据未转置,这些数据应在 hive 中转置。那
1)如果分区列没有数据,那么当你查询它时,你会得到什么错误? 2)如果某些行没有分区列,这些行将如何处理?会不会有数据丢失? 3)为什么需要对数字列进行分桶?我们也可以使用字符串列吗?流程是什么?您将
我是一名优秀的程序员,十分优秀!