<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Hive on LeoChu Space</title>
    <link>https://leochu.work/blog/tags/hive/</link>
    <description>Recent content in Hive on LeoChu Space</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sat, 12 Oct 2024 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://leochu.work/blog/tags/hive/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>hiveOnSpak客户端RemoteSparkDriver超时</title>
      <link>https://leochu.work/blog/tech/bigdata/hiveonspark%E5%AE%A2%E6%88%B7%E7%AB%AFremotesparkdriver%E8%B6%85%E6%97%B6/</link>
      <pubDate>Sat, 12 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/hiveonspark%E5%AE%A2%E6%88%B7%E7%AB%AFremotesparkdriver%E8%B6%85%E6%97%B6/</guid>
      <description>&lt;h2 id=&#34;1现象&#34;&gt;1.现象&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;Pasted image 20230327113600.png&#34; loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/Pasted%20image%2020230327113600.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;2原因&#34;&gt;2.原因&lt;/h2&gt;
&lt;p&gt;集群资源使用率过高时可能会导致Hive On Spark查询失败-查询超时。&lt;/p&gt;
&lt;p&gt;从hive on spark的架构看出超时的位置：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Pasted image 20230327113614.png&#34; loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/Pasted%20image%2020230327113614.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;3解决&#34;&gt;3.解决&lt;/h2&gt;
&lt;p&gt;修改以下参数，重启集群&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;### 其他可设置的参考参数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 在Hive client和远程Spark driver通信过程中，随机生成密码的比特数。最好设置成8的倍数。　&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive.spark.client.secret.bits
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 远程Spark drive用于处理RPC事件所用的最大线程数，默认是8。　&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive.spark.client.rpc.threads
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Hive client和远程Spark driver通信最大的消息大小（单位：byte）,默认是50MB。　&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive.spark.client.rpc.max.size
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 远程Spark driver的通道日志级别，必须是DEBUG, ERROR, INFO, TRACE, WARN中的一个。　&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive.spark.client.channel.log.level
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 用于身份验证的SASL机制的名称。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive.spark.client.rpc.sasl.mechanisms
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#生产集群设置的相应参数：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive.spark.client.future.timeout&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;360s &lt;span style=&#34;color:#75715e&#34;&gt;# Hive client请求Spark driver的超时时间，如果没有指定时间单位，默认就是秒。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive.metastore.client.socket.timeout&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;360s &lt;span style=&#34;color:#75715e&#34;&gt;# 客户端socket超时时间，默认20秒。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive.spark.client.connect.timeout&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;360000ms &lt;span style=&#34;color:#75715e&#34;&gt;# Spark driver连接Hive client的超时时间，如果没有指定时间单位，默认就是毫秒。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive.spark.client.server.connect.timeout&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;360000ms &lt;span style=&#34;color:#75715e&#34;&gt;# Hive client和远程Spark driver握手时的超时时间，这个会在两边都检查的，如果没有指定时间单位，默认就是毫秒。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive.spark.job.monitor.timeout&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;180s &lt;span style=&#34;color:#75715e&#34;&gt;# Job监控获取Spark作业状态的超时时间，如果没有指定时间单位，默认就是秒。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>ES映射hive数据类型date无法解析</title>
      <link>https://leochu.work/blog/tech/bigdata/es%E6%98%A0%E5%B0%84hive%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8Bdate%E6%97%A0%E6%B3%95%E8%A7%A3%E6%9E%90/</link>
      <pubDate>Sat, 06 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/es%E6%98%A0%E5%B0%84hive%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8Bdate%E6%97%A0%E6%B3%95%E8%A7%A3%E6%9E%90/</guid>
      <description>&lt;h3 id=&#34;在es中数据类型为date&#34;&gt;在es中数据类型为date：&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;addTime&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;yyyy-MM-dd HH:mm:ss&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;date&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;在hive建映射表&#34;&gt;在hive建映射表&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;CREATE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;EXTERNAL&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;TABLE&lt;/span&gt; hive_es.cty_test1(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;addTime date
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;STORED &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;org.elasticsearch.hadoop.hive.EsStorageHandler&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TBLPROPERTIES(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.resource&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;cty_test/cty_test&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.nodes&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;172.16.98.113,172.16.98.149,172.16.98.150,172.16.98.151,172.16.98.152&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.port&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;9200&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.mapping.names&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;addTime:addTime&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.date.format&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;yyyy-MM-dd HH:mm:ss&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.index.auto.create&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;false&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;查询报错&#34;&gt;查询报错：&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&#34;Pasted image 20230327120417.png&#34; loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/Pasted%20image%2020230327120417.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;更改hive表数据类型为string&#34;&gt;更改hive表数据类型为string&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;CREATE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;EXTERNAL&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;TABLE&lt;/span&gt; hive_es.cty_test5(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;addTime string
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;STORED &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;org.elasticsearch.hadoop.hive.EsStorageHandler&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TBLPROPERTIES(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.resource&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;cty_test/cty_test&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.nodes&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;172.16.98.113,172.16.98.149,172.16.98.150,172.16.98.151,172.16.98.152&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.port&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;9200&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.mapping.names&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;addTime:addTime&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.date.format&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;yyyy-MM-dd HH:mm:ss&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.index.auto.create&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;false&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;查询继续报错&#34;&gt;查询继续报错：&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&#34;Pasted image 20230327120434.png&#34; loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/Pasted%20image%2020230327120434.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;查阅资料&#34;&gt;查阅资料：&lt;/h3&gt;
&lt;p&gt;elasticsearch-hadoop中用于将ES中的日期转换为Hive中的日期格式的类为org.elasticsearch.hadoop.hive.HiveValueReader，通过查看该类的源码，其实现的用户日期转换的方法为：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@Override&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;protected&lt;/span&gt; Object &lt;span style=&#34;color:#a6e22e&#34;&gt;parseDate&lt;/span&gt;(String value, &lt;span style=&#34;color:#66d9ef&#34;&gt;boolean&lt;/span&gt; richDate) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; (richDate &lt;span style=&#34;color:#f92672&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; TimestampWritable(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; Timestamp(DatatypeConverter.&lt;span style=&#34;color:#a6e22e&#34;&gt;parseDateTime&lt;/span&gt;(value).&lt;span style=&#34;color:#a6e22e&#34;&gt;getTimeInMillis&lt;/span&gt;())) : parseString(value));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;可以看到它是通过javax.xml.bind.DatatypeConverter.parseDateTime(String)方法将对应的日期字符串转换为日期的，该方法不支持的日期字符串格式为“yyyy-MM-dd HH:mm:ss”的字符串，它支持的日期字符串的格式为“yyyy-MM-ddTHH:mm:ss”这样的。&lt;/p&gt;
&lt;h3 id=&#34;解决方案&#34;&gt;解决方案：&lt;/h3&gt;
&lt;p&gt;在建表时设置参数&amp;rsquo;es.mapping.date.rich&amp;rsquo;=&amp;lsquo;false&amp;rsquo;，然后hive字段类型设为string。&lt;/p&gt;
&lt;h3 id=&#34;官方解释&#34;&gt;官方解释：&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Whether to create a rich Date like object for Date fields in Elasticsearch or returned them as primitives (String or long). By default this is true. The actual object type is based on the library used; noteable exception being Map/Reduce which provides no built-in Date object and as such LongWritable and Text are returned regardless of this setting.&lt;/p&gt;</description>
    </item>
    <item>
      <title>left join 谓词下推</title>
      <link>https://leochu.work/blog/tech/bigdata/left-join%E8%B0%93%E8%AF%8D%E4%B8%8B%E6%8E%A8/</link>
      <pubDate>Sun, 19 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/left-join%E8%B0%93%E8%AF%8D%E4%B8%8B%E6%8E%A8/</guid>
      <description>&lt;p&gt;zzz1&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;uid&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;is_delete&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;1&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;2&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;3&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;zzz2&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;uid&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;is_delete&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;3&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;0&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;from&lt;/span&gt; zzz1 &lt;span style=&#34;color:#66d9ef&#34;&gt;left&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;join&lt;/span&gt; zzz2 &lt;span style=&#34;color:#66d9ef&#34;&gt;on&lt;/span&gt; zzz1.uid &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; zzz2.uid
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;where&lt;/span&gt; zzz1.is_delete &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;and&lt;/span&gt; zzz2.is_delete &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;结果:
3       0       3       0&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;from&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;from&lt;/span&gt; zzz1 &lt;span style=&#34;color:#66d9ef&#34;&gt;where&lt;/span&gt; zzz1.is_delete &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) z1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;left&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;join&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;from&lt;/span&gt; zzz2 &lt;span style=&#34;color:#66d9ef&#34;&gt;where&lt;/span&gt; zzz2.is_delete &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) z2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;on&lt;/span&gt; z1.uid &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; z2.uid
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;结果:
2       0       NULL    NULL
3       0       3       0&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;from&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;from&lt;/span&gt; zzz1 &lt;span style=&#34;color:#66d9ef&#34;&gt;where&lt;/span&gt; zzz1.is_delete &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) z1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;left&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;join&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;from&lt;/span&gt; zzz2 &lt;span style=&#34;color:#66d9ef&#34;&gt;where&lt;/span&gt; zzz2.is_delete &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) z2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;on&lt;/span&gt; z1.uid &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; z2.uid &lt;span style=&#34;color:#66d9ef&#34;&gt;where&lt;/span&gt; z2.uid &lt;span style=&#34;color:#66d9ef&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;结果:
3       0       3       0&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hive注册udf</title>
      <link>https://leochu.work/blog/tech/bigdata/hive%E6%B3%A8%E5%86%8Cudf/</link>
      <pubDate>Sun, 13 Nov 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/hive%E6%B3%A8%E5%86%8Cudf/</guid>
      <description>&lt;h4 id=&#34;1创建临时函数&#34;&gt;1.创建临时函数&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive&amp;gt; add jar /home/hadoop/bigdata_udf.jar;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive&amp;gt; create temporary &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; isContains100 as &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;com.xx.hive.udf.hm2.IsContains100&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--验证
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive&amp;gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; isContains100&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;t.col1&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; from t limit 10;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive&amp;gt; drop temporary &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; isContains100;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;2创建永久函数&#34;&gt;2.创建永久函数&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hadoop fs -put /opt/bigdata_udf.jar /udf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive&amp;gt; create &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; default.url_decode as &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;com.xx.udf.DecodeURL&amp;#39;&lt;/span&gt; using jar &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hdfs:///udf/bigdata_udf.jar&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--验证
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hive&amp;gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; default.url_decode&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;t.col1&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; from t limit 10;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;注意注册永久函数必须使用hdfs路径不可使用本地路径&#34;&gt;注意:注册永久函数必须使用hdfs路径,不可使用本地路径&lt;/h4&gt;</description>
    </item>
    <item>
      <title>Hive映射HBase数据源</title>
      <link>https://leochu.work/blog/tech/bigdata/hive%E6%98%A0%E5%B0%84hbase%E6%95%B0%E6%8D%AE%E6%BA%90/</link>
      <pubDate>Sun, 30 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/hive%E6%98%A0%E5%B0%84hbase%E6%95%B0%E6%8D%AE%E6%BA%90/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;CREATE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;EXTERNAL&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;TABLE&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt;mongodb_dingtalk.hbasetohive_patent&lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt;(  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;key&lt;/span&gt; String,  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;abstracts String,  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;address String)  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;STORED &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;org.apache.hadoop.hive.hbase.HBaseStorageHandler&amp;#39;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;WITH&lt;/span&gt; SERDEPROPERTIES (&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hbase.columns.mapping&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;:key,info:abstracts,info:address&amp;#34;&lt;/span&gt;)  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TBLPROPERTIES(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;[hbase.table.name](http://hbase.table.name/)&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;dingtalk:patent&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;仅从HBase拉取数据使用，禁止利用此种方式往HBase写数据&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;数据拉出时拉出hbase中数据对应当前版本的时间戳&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;create&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;external&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;table&lt;/span&gt; ods.ods_zxk_hbase_wechat_public_account_mapping(  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;id string &lt;span style=&#34;color:#66d9ef&#34;&gt;comment&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;需要拆分的key&amp;#39;&lt;/span&gt;,  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ts &lt;span style=&#34;color:#66d9ef&#34;&gt;timestamp&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;comment&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;数据标识符，用来跟新数据做去重&amp;#39;&lt;/span&gt;)  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;comment&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;高级搜索有无微信公众号&amp;#39;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;STORED &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;org.apache.hadoop.hive.hbase.HBaseStorageHandler&amp;#39;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;WITH&lt;/span&gt; SERDEPROPERTIES (&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hbase.columns.mapping&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;:key,:timestamp&amp;#39;&lt;/span&gt;)  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TBLPROPERTIES(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;[hbase.table.name](http://hbase.table.name/)&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dingtalk:wechat_public_account&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>hive映射es</title>
      <link>https://leochu.work/blog/tech/bigdata/hive%E6%98%A0%E5%B0%84elasticsearch/</link>
      <pubDate>Sun, 16 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/hive%E6%98%A0%E5%B0%84elasticsearch/</guid>
      <description>&lt;h3 id=&#34;一-hive导入es&#34;&gt;一 hive导入es&lt;/h3&gt;
&lt;h4 id=&#34;1-创建hive-es映射表&#34;&gt;1 创建hive-es映射表&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;CREATE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;EXTERNAL&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;TABLE&lt;/span&gt; hive_es.re_run_test2(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;id STRING
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;,test STRING)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;STORED &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;org.elasticsearch.hadoop.hive.EsStorageHandler&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TBLPROPERTIES(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.resource&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;re_run_test2/test&amp;#39;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.nodes&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;172.16.98.113,172.16.98.149,172.16.98.150,172.16.98.151,172.16.98.152&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.port&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;9200&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.mapping.id&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;id&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;注&#34;&gt;注：&lt;/h3&gt;
&lt;h3 id=&#34;1&#34;&gt;1.&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;es.resource对应es中的index/type
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;2&#34;&gt;2.&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1.es.mapping.names为hive和es字段名映射关系。
2.如果hive表和es表字段名完全一致，可以省略此参数。
3.hive中字段名不区分大小写，元数据寸的全是小写；es中字段大小写敏感，如果es中字段名出现大写，需认真填写。
4.es中_id为自动生成，如若需要覆盖，需加参数&amp;#39;es.mapping.id&amp;#39;=&amp;#39;id&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;&lt;/h3&gt;
&lt;h4 id=&#34;2-先导入es映射表相关jar包&#34;&gt;2 先导入es映射表相关jar包&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;add jar /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hive/auxlib/elasticsearch-hadoop-6.3.0.jar;
add jar /data/jar/httpclient-4.5.5.jar;
add jar /data/jar/org.apache.commons.httpclient.jar;
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;3-向映射表insert数据&#34;&gt;3 向映射表insert数据&lt;/h4&gt;
&lt;h3 id=&#34;二-es导入hive&#34;&gt;二 es导入hive&lt;/h3&gt;
&lt;h4 id=&#34;1-建hive映射表&#34;&gt;1 建hive映射表&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;CREATE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;EXTERNAL&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;TABLE&lt;/span&gt; hive_es.cty_test5(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;addTime string
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;STORED &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;org.elasticsearch.hadoop.hive.EsStorageHandler&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TBLPROPERTIES(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.resource&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;cty_test/cty_test&amp;#39;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.nodes&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;172.16.98.113,172.16.98.149,172.16.98.150,172.16.98.151,172.16.98.152&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.port&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;9200&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.mapping.names&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;addTime:addTime&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.mapping.date.rich&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;false&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;es.index.auto.create&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;false&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;注意hive表数据类型要和es一致除了es的date要转成hive的string同时要加参数esmappingdaterichfalse否则查询会报错&#34;&gt;注意，hive表数据类型要和es一致，除了es的date要转成hive的string，同时要加参数&amp;rsquo;es.mapping.date.rich&amp;rsquo;=&amp;lsquo;false&amp;rsquo;,否则查询会报错.&lt;/h5&gt;
&lt;h4 id=&#34;2-通过映射表向其他表insert&#34;&gt;2 通过映射表向其他表insert&lt;/h4&gt;
&lt;h3 id=&#34;参考&#34;&gt;参考：&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://www.cnblogs.com/koushr/p/9505435.html&#34;&gt;https://www.cnblogs.com/koushr/p/9505435.html&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>hive设置spark参数</title>
      <link>https://leochu.work/blog/tech/bigdata/hive%E8%AE%BE%E7%BD%AEspark%E5%8F%82%E6%95%B0/</link>
      <pubDate>Sun, 02 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/hive%E8%AE%BE%E7%BD%AEspark%E5%8F%82%E6%95%B0/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set spark.master&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;yarn-cluster;          &lt;span style=&#34;color:#75715e&#34;&gt;#设置spark提交模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set hive.execution.engine&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;spark;         &lt;span style=&#34;color:#75715e&#34;&gt;#设置计算引擎&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set spark.yarn.queue&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;queue_name;      &lt;span style=&#34;color:#75715e&#34;&gt;#设置作业提交队列&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set spark.app.name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;job_name;         &lt;span style=&#34;color:#75715e&#34;&gt;#设置作业名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set spark.executor.instances&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;20;         &lt;span style=&#34;color:#75715e&#34;&gt;#设置执行器个数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set spark.executor.cores&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;4;            &lt;span style=&#34;color:#75715e&#34;&gt;#设置执行器计算核个数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set spark.executor.memory&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;8g;         &lt;span style=&#34;color:#75715e&#34;&gt;#设置执行器内存&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set mapred.reduce.tasks&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;600;           &lt;span style=&#34;color:#75715e&#34;&gt;#设置任务并行度&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set spark.yarn.executor.memoryOverhead&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;2048;   &lt;span style=&#34;color:#75715e&#34;&gt;#设置每个executor的jvm堆外内存&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set spark.memory.fraction&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;0.8;          &lt;span style=&#34;color:#75715e&#34;&gt;#设置内存比例(spark2.0+)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set spark.serializer&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;org.apache.serializer.KyroSerializer;  &lt;span style=&#34;color:#75715e&#34;&gt;#设置对象序列化方式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Hive调优大全</title>
      <link>https://leochu.work/blog/tech/bigdata/hive%E8%B0%83%E4%BC%98%E5%A4%A7%E5%85%A8/</link>
      <pubDate>Sun, 18 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/hive%E8%B0%83%E4%BC%98%E5%A4%A7%E5%85%A8/</guid>
      <description>&lt;h1 id=&#34;调优具体细节&#34;&gt;调优具体细节&lt;/h1&gt;
&lt;h2 id=&#34;hive建表设计层面&#34;&gt;Hive建表设计层面&lt;/h2&gt;
&lt;p&gt;Hive 的建表设计层面调优，主要讲的怎么样合理的组织数据，方便后续的高效计算。比如建表的类型，文件存储格式，是否压缩等等。&lt;/p&gt;
&lt;h3 id=&#34;利用分区表优化&#34;&gt;利用分区表优化&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;关于 Hive 的表的类型有哪些？
1、分区表  
2、分桶表
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;分区表 是在某一个或者几个维度上对数据进行分类存储，一个分区对应一个目录。如果筛选条件里有分区字段，那么 Hive 只需要遍历对应分区目录下的文件即可，不需要遍历全局数据，使得处理的数据量大大减少，从而提高查询效率。&lt;/p&gt;
&lt;p&gt;也就是说：&lt;strong&gt;当一个 Hive 表的查询大多数情况下，会根据某一个字段进行筛选时，那么非常适合创建为分区表，该字段即为分区字段。&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;select1:  select ....  where country = &amp;#34;china&amp;#34;
select2:  select ....  where country = &amp;#34;china&amp;#34;
select3:  select ....  where country = &amp;#34;china&amp;#34;
select4:  select ....  where country = &amp;#34;china&amp;#34;
.....
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;分门别类：这个city字段的每个值，就单独形成为一个分区。其实每个分区就对应带HDFS的一个目录&lt;/p&gt;
&lt;p&gt;在创建表时通过启用 &lt;code&gt;partitioned by&lt;/code&gt; 实现，用来 partition 的维度并不是实际数据的某一列，具体分区的标志是由插入内容时给定的。当要查询某一分区的内容时可以采用 where 语句，形似 &lt;code&gt;where tablename.partition_column = a&lt;/code&gt; 来实现。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1、创建含分区的表：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;CREATE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;TABLE&lt;/span&gt; page_view(viewTime INT, userid BIGINT,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       page_url STRING, referrer_url STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       ip STRING &lt;span style=&#34;color:#66d9ef&#34;&gt;COMMENT&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;IP Address of the User&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PARTITIONED &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt;(date STRING, country STRING)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ROW&lt;/span&gt; FORMAT DELIMITED FIELDS TERMINATED &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;STORED &lt;span style=&#34;color:#66d9ef&#34;&gt;AS&lt;/span&gt; TEXTFILE;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;2、载入内容，并指定分区标志：&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hive常用参数语句</title>
      <link>https://leochu.work/blog/tech/bigdata/hive%E5%B8%B8%E7%94%A8%E5%8F%82%E6%95%B0%E8%AF%AD%E5%8F%A5/</link>
      <pubDate>Sun, 04 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/hive%E5%B8%B8%E7%94%A8%E5%8F%82%E6%95%B0%E8%AF%AD%E5%8F%A5/</guid>
      <description>&lt;h4 id=&#34;1动态分区&#34;&gt;1.动态分区&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; hive.&lt;span style=&#34;color:#66d9ef&#34;&gt;exec&lt;/span&gt;.&lt;span style=&#34;color:#66d9ef&#34;&gt;dynamic&lt;/span&gt;.partition&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; hive.&lt;span style=&#34;color:#66d9ef&#34;&gt;exec&lt;/span&gt;.&lt;span style=&#34;color:#66d9ef&#34;&gt;dynamic&lt;/span&gt;.partition.&lt;span style=&#34;color:#66d9ef&#34;&gt;mode&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;nonstrict;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; hive.&lt;span style=&#34;color:#66d9ef&#34;&gt;exec&lt;/span&gt;.&lt;span style=&#34;color:#66d9ef&#34;&gt;max&lt;/span&gt;.&lt;span style=&#34;color:#66d9ef&#34;&gt;dynamic&lt;/span&gt;.partitions&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100000&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; hive.&lt;span style=&#34;color:#66d9ef&#34;&gt;exec&lt;/span&gt;.&lt;span style=&#34;color:#66d9ef&#34;&gt;max&lt;/span&gt;.&lt;span style=&#34;color:#66d9ef&#34;&gt;dynamic&lt;/span&gt;.partitions.pernode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100000&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; hive.&lt;span style=&#34;color:#66d9ef&#34;&gt;exec&lt;/span&gt;.&lt;span style=&#34;color:#66d9ef&#34;&gt;max&lt;/span&gt;.created.files&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100000&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;2union-all并发执行&#34;&gt;2.union all并发执行&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--在使用union all的时候，系统资源足够的情况下，为了加快hive处理速度，可以设置如下参数实现并发执行
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; mapred.job.priority&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;VERY_HIGH;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; hive.&lt;span style=&#34;color:#66d9ef&#34;&gt;exec&lt;/span&gt;.parallel&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;3设置map-reduce个数&#34;&gt;3.设置map reduce个数&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- 设置map capacity
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; mapred.job.&lt;span style=&#34;color:#66d9ef&#34;&gt;map&lt;/span&gt;.capacity&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2000&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; mapred.job.reduce.capacity&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2000&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- 设置每个reduce的大小
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; hive.&lt;span style=&#34;color:#66d9ef&#34;&gt;exec&lt;/span&gt;.reducers.bytes.per.reducer&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;500000000&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- 直接设置个数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; mapred.reduce.tasks &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;15&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;4文件合并&#34;&gt;4.文件合并&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- 设置文件合并
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; abaci.&lt;span style=&#34;color:#66d9ef&#34;&gt;is&lt;/span&gt;.dag.job&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; hive.merge.mapredfiles&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; mapred.combine.&lt;span style=&#34;color:#66d9ef&#34;&gt;input&lt;/span&gt;.format.&lt;span style=&#34;color:#66d9ef&#34;&gt;local&lt;/span&gt;.&lt;span style=&#34;color:#66d9ef&#34;&gt;only&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; hive.merge.smallfiles.avgsize&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100000000&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- 在map only的情况下，如上的参数如果没有生效，可以设置如下
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- 在HQL的最外层增加distribute by rand()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;from&lt;/span&gt; XXX distribute &lt;span style=&#34;color:#66d9ef&#34;&gt;by&lt;/span&gt; rand()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;5设置任务名称&#34;&gt;5.设置任务名称&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- 设置名称
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; mapred.job.name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;${&lt;/span&gt;my_job&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;}&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;6设置引擎和指定队列&#34;&gt;6.设置引擎和指定队列&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; hive.execution.engine&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;mr;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; mapreduce.job.queuename&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;bigdata;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Hive-mongo导入导出</title>
      <link>https://leochu.work/blog/tech/bigdata/hive-mongo%E5%AF%BC%E5%85%A5%E5%AF%BC%E5%87%BA/</link>
      <pubDate>Sun, 21 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/hive-mongo%E5%AF%BC%E5%85%A5%E5%AF%BC%E5%87%BA/</guid>
      <description>&lt;h4 id=&#34;1mongodb拉出到hive&#34;&gt;1.MongoDB拉出到hive&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;#&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;导入&lt;/span&gt;mongodb的包到hadoop
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;add&lt;/span&gt; jar &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;var&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;lib&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;hadoop&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;hdfs&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;bin&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;hive_mongoDB&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;mongo&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;hadoop&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;core&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;.&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;.&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;.jar;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;add&lt;/span&gt; jar &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;var&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;lib&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;hadoop&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;hdfs&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;bin&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;hive_mongoDB&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;mongo&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;hadoop&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;hive&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;.&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;.&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;.jar;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;add&lt;/span&gt; jar &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;var&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;lib&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;hadoop&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;hdfs&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;bin&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;hive_mongoDB&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;mongo&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;java&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;driver&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;.&lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;.&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;.jar;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; mongo.&lt;span style=&#34;color:#66d9ef&#34;&gt;input&lt;/span&gt;.split.create_input_splits&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;DROP&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;TABLE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;IF&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;EXISTS&lt;/span&gt; ods.ods_ex_trade_mdb_wmb_rocket_waimao_company_info_mapping;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;drop&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;table&lt;/span&gt; ods.ods_zxk_annualBusiness_mapping;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;create&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;external&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;table&lt;/span&gt; ods.ods_zxk_annualBusiness_mapping(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt;_id&lt;span style=&#34;color:#f92672&#34;&gt;`&lt;/span&gt; string,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;companyName string,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Tel string
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)STORED &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;com.mongodb.hadoop.hive.MongoStorageHandler&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;WITH&lt;/span&gt; SERDEPROPERTIES(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mongo.columns.mapping&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{&amp;#34;_id&amp;#34;:&amp;#34;_id&amp;#34;,&amp;#34;companyName&amp;#34;:&amp;#34;companyName&amp;#34;,&amp;#34;Tel&amp;#34;:&amp;#34;Tel&amp;#34;}&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TBLPROPERTIES(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mongo.uri&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mongodb://username:password@172.16.98.159:21000/annualReport.annualBusiness?authSource=admin&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Hive 字段中文注释乱码</title>
      <link>https://leochu.work/blog/tech/bigdata/hive%E5%AD%97%E6%AE%B5%E4%B8%AD%E6%96%87%E6%B3%A8%E9%87%8A%E4%B9%B1%E7%A0%81%E4%BF%AE%E5%A4%8D/</link>
      <pubDate>Sun, 07 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/hive%E5%AD%97%E6%AE%B5%E4%B8%AD%E6%96%87%E6%B3%A8%E9%87%8A%E4%B9%B1%E7%A0%81%E4%BF%AE%E5%A4%8D/</guid>
      <description>&lt;p&gt;Hive 字段中文乱码，如执行 show create table xxx 时，表级别注释、字段级别注释发现有乱码现象（都是？？？？）， 一般都是由 hive 元数据库的配置不当造成的。 &lt;/p&gt;
&lt;p&gt;此时可按如下步骤进行配置调整：&lt;/p&gt;
&lt;p&gt;登录 hive 的元数据库 mysql 中：&lt;/p&gt;
&lt;p&gt;&lt;em&gt;1、设置 hive 元数据库字符集&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;show create database hive;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;查看为 utf8，需变更为 latin1&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;_alter database hive character set latin1; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;2、更改如下表字段为字符集编码为 utf8&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;①修改表字段注解和表注解&lt;br&gt;
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8&lt;br&gt;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8&lt;br&gt;
② 修改分区字段注解：&lt;br&gt;
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;&lt;br&gt;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;&lt;br&gt;
③修改索引注解：&lt;br&gt;
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hive 数仓建表该选用 ORC 还是 Parquet，压缩选 LZO 还是 Snappy</title>
      <link>https://leochu.work/blog/tech/bigdata/hive%E5%BB%BA%E8%A1%A8%E6%A0%BC%E5%BC%8F%E9%80%89%E5%9E%8B-orc-parquet-lzo-snappy/</link>
      <pubDate>Sun, 24 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/hive%E5%BB%BA%E8%A1%A8%E6%A0%BC%E5%BC%8F%E9%80%89%E5%9E%8B-orc-parquet-lzo-snappy/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;在数仓中，建议大家除了接口表（从其他数据库导入或者是最后要导出到其他数据库的表），其余表的存储格式与压缩格式保持一致。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在数仓中，建议大家除了接口表（从其他数据库导入或者是最后要导出到其他数据库的表），其余表的存储格式与压缩格式保持一致。&lt;/p&gt;
&lt;p&gt;我们先来说一下目前 Hive 表主流的存储格式与压缩方式&lt;/p&gt;
&lt;p&gt;从 Hive 官网得知，Apache Hive 支持 Apache Hadoop 中使用的几种熟悉的文件格式，如 &lt;code&gt;TextFile（文本格式）&lt;/code&gt;，&lt;code&gt;RCFile（行列式文件）&lt;/code&gt;，&lt;code&gt;SequenceFile（二进制序列化文件）&lt;/code&gt;，&lt;code&gt;AVRO&lt;/code&gt;，&lt;code&gt;ORC（优化的行列式文件）&lt;/code&gt;和&lt;code&gt;Parquet&lt;/code&gt; 格式，而这其中我们目前使用最多的是&lt;code&gt;TextFile&lt;/code&gt;，&lt;code&gt;SequenceFile&lt;/code&gt;，&lt;code&gt;ORC&lt;/code&gt;和&lt;code&gt;Parquet&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;下面来详细了解下这 2 种行列式存储。&lt;/p&gt;
&lt;h2 id=&#34;1orc&#34;&gt;1、ORC&lt;/h2&gt;
&lt;h3 id=&#34;11-orc-的存储结构&#34;&gt;1.1 ORC 的存储结构&lt;/h3&gt;
&lt;p&gt;我们先从官网上拿到 ORC 的存储模型图&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.doitedu.cn/wp-content/uploads/2021/12/a.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;看起来略微有点复杂，那我们稍微简化一下，我画了一个简单的图来说明一下&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.doitedu.cn/wp-content/uploads/2021/12/b-1024x456.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;但是由于索引的高成本，在**「目前的 Hive3.X 中，已经废除了索引」**，当然也早就引入了列式存储。&lt;/p&gt;
&lt;p&gt;列式存储的存储方式，是按照一列一列存储的，如上图中的右图，这样的话如果查询一个字段的数据，就等于是索引查询，效率高。但是如果需要查全表，它因为需要分别取所有的列最后汇总，反而更占用资源。于是 ORC 行列式存储出现了。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在需要全表扫描时，可以按照行组读取&lt;/li&gt;
&lt;li&gt;如果需要取列数据，在行组的基础上，读取指定的列，而不需要所有行组内所有行的数据和一行内所有字段的数据。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;了解了 ORC 存储的基本逻辑后，我们再来看看它的存储模型图。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.doitedu.cn/wp-content/uploads/2021/12/c.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;同时我也把详细的文字也附在下面，大家可以对照着看看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;条带 (stripe)：ORC 文件存储数据的地方，每个 stripe 一般为 HDFS 的块大小。（包含以下 3 部分）&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;index data:保存了所在条带的一些统计信息,以及数据在 stripe中的位置索引信息。
rows data:数据存储的地方,由多个行组构成，每10000行构成一个行组，数据以流( stream)的形式进行存储。
stripe footer:保存数据所在的文件目录
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;文件脚注 (file footer)：包含了文件中 sipe 的列表, 每个 stripe 的行数, 以及每个列的数据类型。它还包含每个列的最小值、最大值、行计数、求和等聚合信息。&lt;/li&gt;
&lt;li&gt;postscript：含有压缩参数和压缩大小相关的信息&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以其实发现，ORC 提供了 3 级索引，文件级、条带级、行组级，所以在查询的时候，利用这些索引可以规避大部分不满足查询条件的文件和数据块。&lt;/p&gt;</description>
    </item>
    <item>
      <title>beeline导出数据</title>
      <link>https://leochu.work/blog/tech/bigdata/beeline%E5%AF%BC%E5%87%BA%E6%95%B0%E6%8D%AE/</link>
      <pubDate>Sun, 01 May 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/beeline%E5%AF%BC%E5%87%BA%E6%95%B0%E6%8D%AE/</guid>
      <description>&lt;p&gt;beeline  -n  chutianyu -p chutianyu &amp;ndash;showHeader=false  &amp;ndash;outputformat=csv2  -e  &amp;ldquo;select * from smp.india_imp_json_test2mongo ;&amp;rdquo; &amp;gt;  india_imp_test1.json&lt;/p&gt;</description>
    </item>
    <item>
      <title>取消HDP hive默认开启ACID配置</title>
      <link>https://leochu.work/blog/tech/bigdata/%E5%8F%96%E6%B6%88hdp-hive%E9%BB%98%E8%AE%A4%E5%BC%80%E5%90%AFacid%E9%85%8D%E7%BD%AE/</link>
      <pubDate>Sun, 20 Mar 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/%E5%8F%96%E6%B6%88hdp-hive%E9%BB%98%E8%AE%A4%E5%BC%80%E5%90%AFacid%E9%85%8D%E7%BD%AE/</guid>
      <description>&lt;h3 id=&#34;问题描述&#34;&gt;问题描述&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&#34;Pasted image 20231220150234.png&#34; loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/Pasted%20image%2020231220150234.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;原因排查&#34;&gt;原因排查&lt;/h3&gt;
&lt;p&gt;HDP 的 hive 使用的版本较高为3.1.0  ，默认建表都是使用 ACID 的事务表。而 HDP的spark版本较低为2.3 目前还不支持 hive 的 ACID 功能，因此无法读取 ACID 表的数据，准确来说是内表的数据。&lt;/p&gt;
&lt;h3 id=&#34;官方资料&#34;&gt;官方资料&lt;/h3&gt;
&lt;p&gt;spark issues 地址： &lt;a href=&#34;https://issues.apache.org/jira/browse/SPARK-15348&#34;&gt;SPARK-15348 Hive ACID&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;解决方案&#34;&gt;解决方案&lt;/h3&gt;
&lt;p&gt;修改hive以下配置，重启hive&lt;/p&gt;
&lt;p&gt;hive.strict.managed.tables =false&lt;br&gt;
hive.create.as.insert.only =false&lt;br&gt;
metastore.create.as.acid =false&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Pasted image 20231220150309.png&#34; loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/Pasted%20image%2020231220150309.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Pasted image 20231220150319.png&#34; loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/Pasted%20image%2020231220150319.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Pasted image 20231220150325.png&#34; loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/Pasted%20image%2020231220150325.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;其他资料&#34;&gt;其他资料&lt;/h3&gt;
&lt;h4 id=&#34;hive-中支持的表类型和-acid-特性&#34;&gt;Hive 中支持的表类型和 ACID 特性&lt;/h4&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;表类型&lt;/td&gt;
          &lt;td&gt;ACID&lt;/td&gt;
          &lt;td&gt;文件格式&lt;/td&gt;
          &lt;td&gt;插入&lt;/td&gt;
          &lt;td&gt;更新 / 删除&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;托管表：CRUD 事务&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;ORC&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;托管表：仅插入式事务&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;任意格式&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;没有&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;托管表：临时&lt;/td&gt;
          &lt;td&gt;没有&lt;/td&gt;
          &lt;td&gt;任意格式&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;没有&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;外部表&lt;/td&gt;
          &lt;td&gt;没有&lt;/td&gt;
          &lt;td&gt;任意格式&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;没有&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;查看表的属性，指令：&lt;code&gt;desc formatted tb_name&lt;/code&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
