<?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>速查 on LeoChu Space</title>
    <link>https://leochu.work/blog/tags/%E9%80%9F%E6%9F%A5/</link>
    <description>Recent content in 速查 on LeoChu Space</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Thu, 02 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://leochu.work/blog/tags/%E9%80%9F%E6%9F%A5/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>集群常用脚本</title>
      <link>https://leochu.work/blog/tech/engineering/%E9%9B%86%E7%BE%A4%E5%B8%B8%E7%94%A8%E8%84%9A%E6%9C%AC/</link>
      <pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/engineering/%E9%9B%86%E7%BE%A4%E5%B8%B8%E7%94%A8%E8%84%9A%E6%9C%AC/</guid>
      <description>&lt;p&gt;多重执行xcall.sh&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/bash

# 遍历所有节点（集群主机列表）
for i in cdhmaster01 cdhmaster02 cdhmaster03 cdhnode01 cdhnode02 cdhnode03
do
  # 打印当前正在操作的主机，方便区分输出
  echo &amp;#34;--------- $i ----------&amp;#34;

  # 通过 ssh 在远程主机执行传入的命令
  # &amp;#34;$*&amp;#34; 表示把所有参数当作一个整体传过去
  # 例如：./xcall.sh pwd
  # 实际执行：ssh cdhmaster01 &amp;#34;pwd&amp;#34;
  ssh $i &amp;#34;$*&amp;#34;
done
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;集群分发xsync.sh&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/bash

if [ $# -eq 0 ]; then
  echo &amp;#34;Usage: $0  [more files_or_dirs]&amp;#34;
  exit 1
fi

hosts=(cdhmaster01 cdhmaster02 cdhmaster03 cdhnode01 cdhnode02 cdhnode03)
user=$(whoami)

for src in &amp;#34;$@&amp;#34;
do
  if [ ! -e &amp;#34;$src&amp;#34; ]; then
    echo &amp;#34;Not found: $src&amp;#34;
    continue
  fi

  abs_src=$(readlink -f &amp;#34;$src&amp;#34;)
  name=$(basename &amp;#34;$abs_src&amp;#34;)
  parent=$(dirname &amp;#34;$abs_src&amp;#34;)

  for host in &amp;#34;${hosts[@]}&amp;#34;
  do
    echo &amp;#34;===== $host =====&amp;#34;

    ssh &amp;#34;$host&amp;#34; &amp;#34;mkdir -p &amp;#39;$parent&amp;#39;&amp;#34;

    if [ -d &amp;#34;$abs_src&amp;#34; ]; then
      rsync -av &amp;#34;$abs_src&amp;#34; &amp;#34;$user@$host:$parent/&amp;#34;
    else
      rsync -av &amp;#34;$abs_src&amp;#34; &amp;#34;$user@$host:$parent/&amp;#34;
    fi
  done
done
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>ORM常用操作</title>
      <link>https://leochu.work/blog/tech/python/django/orm%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C/</link>
      <pubDate>Sat, 16 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/python/django/orm%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C/</guid>
      <description>&lt;h1 id=&#34;orm常用操作&#34;&gt;ORM常用操作&lt;/h1&gt;
&lt;p&gt;Django开发过程中对表(model)的增删改查是最常用的功能之一，本文介绍笔者在使用model 操作过程中遇到的一些操作。&lt;/p&gt;
&lt;h1 id=&#34;model-update常规用法&#34;&gt;model update常规用法&lt;/h1&gt;
&lt;p&gt;假如我们的表结构是这样的&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;class User(models.Model):
    username = models.CharField(max_length=255, unique=True, verbose_name=&amp;#39;用户名&amp;#39;)
    is_active = models.BooleanField(default=False, verbose_name=&amp;#39;激活状态&amp;#39;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;那么我们修改用户名和状态可以使用如下两种方法：&lt;/p&gt;
&lt;p&gt;方法一：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;User.objects.filter(id=1).update(username=&amp;#39;nick&amp;#39;,is_active=True)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;方法二：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;_t = User.objects.get(id=1)
_t.username=&amp;#39;nick&amp;#39;
_t.is_active=True
_t.save()
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;方法一适合更新一批数据，类似于mysql语句&lt;code&gt;update user set username=&#39;nick&#39; where id = 1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;方法二适合更新一条数据，也只能更新一条数据，当只有一条数据更新时推荐使用此方法，另外此方法还有一个好处，我们接着往下看&lt;/p&gt;
&lt;h1 id=&#34;具有auto_now属性字段的更新&#34;&gt;具有auto_now属性字段的更新&lt;/h1&gt;
&lt;p&gt;我们通常会给表添加三个默认字段&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自增ID，这个django已经默认加了，就像上边的建表语句，虽然只写了username和is_active两个字段，但表建好后也会有一个默认的自增id字段&lt;/li&gt;
&lt;li&gt;创建时间，用来标识这条记录的创建时间，具有&lt;code&gt;auto_now_add&lt;/code&gt;属性，创建记录时会自动填充当前时间到此字段&lt;/li&gt;
&lt;li&gt;修改时间，用来标识这条记录最后一次的修改时间，具有&lt;code&gt;auto_now&lt;/code&gt;属性，当记录发生变化时填充当前时间到此字段&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;就像下边这样的表结构&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;class User(models.Model):
    create_time = models.DateTimeField(auto_now_add=True, verbose_name=&amp;#39;创建时间&amp;#39;)
    update_time = models.DateTimeField(auto_now=True, verbose_name=&amp;#39;更新时间&amp;#39;)
    username = models.CharField(max_length=255, unique=True, verbose_name=&amp;#39;用户名&amp;#39;)
    is_active = models.BooleanField(default=False, verbose_name=&amp;#39;激活状态&amp;#39;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;当表有字段具有&lt;code&gt;auto_now&lt;/code&gt;属性且你希望他能自动更新时，必须使用上边方法二的更新，不然auto_now字段不会更新&lt;/strong&gt;，也就是：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;_t = User.objects.get(id=1)
_t.username=&amp;#39;nick&amp;#39;
_t.is_active=True
_t.save()
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;jsondict类型数据更新字段&#34;&gt;json/dict类型数据更新字段&lt;/h1&gt;
&lt;p&gt;目前主流的web开放方式都讲究前后端分离，分离之后前后端交互的数据格式大都用通用的json型，那么如何用最少的代码方便的更新json格式数据到数据库呢？同样可以使用如下两种方法：&lt;/p&gt;
&lt;p&gt;方法一：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;data = {&amp;#39;username&amp;#39;:&amp;#39;nick&amp;#39;,&amp;#39;is_active&amp;#39;:&amp;#39;0&amp;#39;}
User.objects.filter(id=1).update(**data)
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;同样这种方法不能自动更新具有&lt;code&gt;auto_now&lt;/code&gt;属性字段的值&lt;/li&gt;
&lt;li&gt;通常我们再变量前加一个星号(*)表示这个变量是元组/列表，加两个星号表示这个参数是字典&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;方法二：&lt;/p&gt;</description>
    </item>
    <item>
      <title>IDEA常用操作</title>
      <link>https://leochu.work/blog/tech/engineering/idea%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C/</link>
      <pubDate>Sat, 02 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/engineering/idea%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;IDEA（IntelliJ IDEA）是业界公认的最好开发工具之一，当然好不好也因人而异，也不要刻意去争谁强谁弱，高手往往不在乎手中的兵器是什么的。个人而言，更高效的工具适合每个开发人员，在编写代码的时候花的时间少，就有更多的时间去设计&amp;hellip;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;目录&#34;&gt;目录&lt;/h2&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2 id=&#34;一概述&#34;&gt;一、概述&lt;/h2&gt;
&lt;p&gt;IDEA（IntelliJ IDEA）是业界公认的最好开发工具之一，当然好不好也因人而异，也不要刻意去争谁强谁弱，高手往往不在乎手中的兵器是什么的。个人而言，更高效的工具适合每个开发人员，在编写代码的时候花的时间少，就有更多的时间去设计代码，当然，使用一个陌生的 IDE，效率肯定是比不上自己熟练的 IDE 的，所以为了节省诸君的学习成本，也为了更快地去接纳和熟练 IDEA，所以周末之余，故作此文。&amp;mdash;- 一品江南&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;准备&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;所有的电脑软件都有着相同的 UI 框架、菜单结构，对于每一个开发人员来说，基本的文件操作、项目操作、工作空间操作不成问题，不会讲到。&lt;/li&gt;
&lt;li&gt;涉及的其他工具（Maven、Git 等）不会详细讲，只会讲到如何操作，想要深入学习，关注其他博文。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;二配置&#34;&gt;二、配置&lt;/h2&gt;
&lt;p&gt;在安装软件（JDK、Maven、Git、IDEA）搭建好环境后，要对 IDEA 进行一番配置，才能开始开发，每个人都有每个人的配置习惯，可以自己研究自己喜欢的配置，进入 IDEA 的配置 File | Settings（&lt;code&gt;Ctrl+Alt+S&lt;/code&gt;）开始配置。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;选择菜单或设置步骤使用 “|” 分开，后面操作一样&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;1-主题与行为&#34;&gt;1. 主题与行为&lt;/h3&gt;
&lt;p&gt;选择自己喜欢的主题：Appearance &amp;amp; Behavior | Appearance | Theme&lt;/p&gt;
&lt;p&gt;配置骚气的背景图片：Appearance &amp;amp; Behavior | Appearance | UI Options | Background Image…&lt;/p&gt;
&lt;p&gt;在配置中选择合适的窗口选项：Appearance &amp;amp; Behavior | Appearance | Window Options&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Animate windows：关闭动画效果&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Show memory indicator：显示内存使用情况&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Show tool window bars：关闭工具栏显示，按两次&lt;code&gt;Alt&lt;/code&gt;键可以显示&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Small labels in editor tabs：编辑器显示小标签&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;配置自己想看到的菜单项和工具栏：Appearance &amp;amp; Behavior | Menus and Toolbars&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git命令行</title>
      <link>https://leochu.work/blog/tech/engineering/git%E5%91%BD%E4%BB%A4%E8%A1%8C/</link>
      <pubDate>Sat, 03 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/engineering/git%E5%91%BD%E4%BB%A4%E8%A1%8C/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;img&#34; loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/git-command.jpg&#34;&gt;&lt;/p&gt;
&lt;h5 id=&#34;本地仓库链接远程仓库&#34;&gt;本地仓库链接远程仓库&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;git remote add origin &amp;lt;server&amp;gt;git@github.com:yourName/yourRepo.git&lt;/code&gt;&lt;/p&gt;
&lt;h5 id=&#34;创建一个叫做feature_x的分支并切换过去&#34;&gt;创建一个叫做“feature_x”的分支，并切换过去&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;git checkout -b feature_x&lt;/code&gt;&lt;/p&gt;
&lt;h5 id=&#34;再把新建的分支删掉&#34;&gt;再把新建的分支删掉：&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;git branch -d feature_x&lt;/code&gt;&lt;/p&gt;
&lt;h5 id=&#34;预览差异&#34;&gt;预览差异：&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;git diff &amp;lt;source_branch&amp;gt; &amp;lt;target_branch&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;h5 id=&#34;创建一个叫做-100-的标签&#34;&gt;创建一个叫做 &lt;em&gt;1.0.0&lt;/em&gt; 的标签：&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;git tag 1.0.0 1b2e1d63ff&lt;/code&gt;&lt;/p&gt;
&lt;h5 id=&#34;想commit自动来提交本地修改我们可以使用-a标识&#34;&gt;想commit自动来提交本地修改，我们可以使用-a标识&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;git commit -a -m &amp;quot;Changed some files&amp;quot;&lt;/code&gt;
&lt;em&gt;git commit 命令的-a选项可将所有&lt;strong&gt;被修改或者已删除的且已经被git管理的文档&lt;/strong&gt;提交到仓库中&lt;/em&gt;
&lt;em&gt;千万注意，-a不会造成新文件被提交，只能修改。&lt;/em&gt;&lt;/p&gt;
&lt;h5 id=&#34;内建的图形化-git&#34;&gt;内建的图形化 git：&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;gitk&lt;/code&gt;&lt;/p&gt;
&lt;h5 id=&#34;彩色的-git-输出&#34;&gt;彩色的 git 输出：&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;git config color.ui true&lt;/code&gt;&lt;/p&gt;
&lt;h5 id=&#34;使用git-gui创建sshkey及查看&#34;&gt;使用git gui创建sshkey及查看：&lt;/h5&gt;
&lt;p&gt;&lt;img alt=&#34;image-20230213164607434&#34; loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/image-20230213164607434.png&#34;&gt;&lt;/p&gt;
&lt;h5 id=&#34;命令行创建ssh-key&#34;&gt;命令行创建ssh key：&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;ssh-keygen -t rsa -C &amp;quot;your_email@youremail.com&amp;quot;&lt;/code&gt;
&lt;em&gt;后面的&lt;code&gt;your_email@youremail.com&lt;/code&gt;改为你在github上注册的邮箱，之后会要求确认路径和输入密码，我们这使用默认的一路回车就行。成功的话会在&lt;code&gt;~/&lt;/code&gt;下生成&lt;code&gt;.ssh&lt;/code&gt;文件夹，进去，打开&lt;code&gt;id_rsa.pub&lt;/code&gt;，复制里面的&lt;code&gt;key&lt;/code&gt;。&lt;/em&gt;&lt;/p&gt;
&lt;h5 id=&#34;验证是否成功在git-bash下输入&#34;&gt;验证是否成功，在git bash下输入：&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;ssh -T git@github.com&lt;/code&gt;&lt;/p&gt;
&lt;h5 id=&#34;如果要查看指定文件的修改记录可以使用-git-blame-命令格式如下&#34;&gt;如果要查看指定文件的修改记录可以使用 git blame 命令，格式如下：&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;git blame &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>ai栈</title>
      <link>https://leochu.work/blog/tech/ai/ai%E6%8A%80%E6%9C%AF%E6%A0%88/</link>
      <pubDate>Sat, 06 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/ai/ai%E6%8A%80%E6%9C%AF%E6%A0%88/</guid>
      <description>&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;strong&gt;文档整理 / 项目重构 / 架构设计&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Claude Code（基于 Claude Opus）&lt;/td&gt;
          &lt;td&gt;高质量理解长上下文，支持跨文件重构和工程分析；生成方案/代码，但需要外部环境执行&lt;/td&gt;
          &lt;td&gt;pro订阅&lt;/td&gt;
          &lt;td&gt;claude&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;写代码 / 单文件实现&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;OpenAI Codex（GPT-Code 系列）&lt;/td&gt;
          &lt;td&gt;自动生成可运行代码，适合函数、模块、脚本任务；执行依赖你的环境或接口&lt;/td&gt;
          &lt;td&gt;plus订阅&lt;/td&gt;
          &lt;td&gt;openAi&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;实时代码辅助 / IDE 提示&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;GitHub Copilot&lt;/td&gt;
          &lt;td&gt;IDE 插件，提供智能补全和片段建议，不提供 API&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;strong&gt;对话 / 问答 /策略讨论&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;ChatGPT Plus&lt;/td&gt;
          &lt;td&gt;快速交互、概念解释、方案讨论&lt;/td&gt;
          &lt;td&gt;plus订阅&lt;/td&gt;
          &lt;td&gt;openAi&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;机械重复 / 简单批处理任务&lt;/strong&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;miniMax&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;自动化执行 / 跨渠道智能代理&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;OpenClaw&lt;/td&gt;
          &lt;td&gt;可自托管的 AI Agent 框架；整合多模型、消息渠道和技能；能持续管理任务、执行脚本、调用 API 和操作工具；适合自动化工作流和多通道触发，需配置和监管&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;</description>
    </item>
    <item>
      <title>数据模型字段及属性详解</title>
      <link>https://leochu.work/blog/tech/python/django/%E6%95%B0%E6%8D%AE%E6%A8%A1%E5%9E%8B%E5%AD%97%E6%AE%B5%E5%8F%8A%E5%B1%9E%E6%80%A7%E8%AF%A6%E8%A7%A3/</link>
      <pubDate>Sun, 24 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/python/django/%E6%95%B0%E6%8D%AE%E6%A8%A1%E5%9E%8B%E5%AD%97%E6%AE%B5%E5%8F%8A%E5%B1%9E%E6%80%A7%E8%AF%A6%E8%A7%A3/</guid>
      <description>&lt;h1 id=&#34;数据模型字段及属性详解&#34;&gt;数据模型字段及属性详解&lt;/h1&gt;
&lt;p&gt;在设计数据模型的时候，我们需要根据不同的需求，设计不同的表和不同的字段。不同的字段也可以设置不同的参数。&lt;/p&gt;
&lt;p&gt;一个模型（model）就是一个单独的、确定的数据的信息源，包含了数据的字段和操作方法。Django是通过Model操作数据库，不管你数据库的类型是MySql或者Sqlite，Django它自动帮你生成相应数据库类型的SQL语句，所以不需要关注SQL语句和类型，对数据的操作Django帮我们自动完成。只要回写Model就可以了！&lt;/p&gt;
&lt;p&gt;django根据代码中定义的类来自动生成数据库表。我们写的类表示数据库的表，如果根据这个类创建的对象是数据库表里的一行数据，对象.id 对象.value是每一行里的数据。&lt;/p&gt;
&lt;p&gt;基本的原则如下：
每个模型在Django中的存在形式为一个Python类
每个模型都是django.db.models.Model的子类
模型里的每个类代表数据库中的一个表
模型的每个字段（属性）代表数据表的某一列
Django将自动为你生成数据库访问API&lt;/p&gt;
&lt;p&gt;Django这种操作数据库的方式，我们把它叫做：&lt;strong&gt;关系对象映射（Object Relational Mapping，简称ORM）。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我们之前有在&lt;a href=&#34;https://www.django.cn/course/show-11.html&#34;&gt;管理后台与model模型&lt;/a&gt;这文章里简单的接触过。里面的models代码：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;class Category(models.Model):
    name = models.CharField(&amp;#39;分类&amp;#39;,max_length=100)
    
class Tags(models.Model):
    name = models.CharField(&amp;#39;标签&amp;#39;,max_length=100)
    
class Article(models.Model):
    title = models.CharField(&amp;#39;标题&amp;#39;,max_length=70)
    intro = models.TextField(&amp;#39;摘要&amp;#39;, max_length=200, blank=True)
    category = models.ForeignKey(Category, on_delete=models.CASCADE, verbose_name=&amp;#39;分类&amp;#39;, default=&amp;#39;1&amp;#39;)
    tags = models.ManyToManyField(Tags, blank=True)
    body = models.TextField()
    user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name=&amp;#39;作者&amp;#39;)
    created_time = models.DateTimeField(&amp;#39;发布时间&amp;#39;,auto_now_add=True)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;字段是模型中最重要的内容之一，也是唯一必须的部分。字段在Python中表现为一个类属性，体现了数据表中的一个列。Django不允许下面两种字段名：1、与Python关键字冲突。2、字段名中不能有两个以上下划线在一起，因为两个下划线是Django的查询语法。也不要使用clean、save、delete等Django内置的模型API名字，防止命名冲突。&lt;/p&gt;
&lt;p&gt;每一个字段都是一个类属性，每个类属性表示数据表中的一个列。上面那个models生成数据后，在数据库里是这样的：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;1.jpg&#34; loading=&#34;lazy&#34; src=&#34;https://www.django.cn/media/upimg/1_20180727113014_518.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;表名由Django自动生成，例如我们的Article类会自动生成为blog_Article，默认格式为“应用名称+下划线+小写类名”。如果你不指定主键，Django默认自动创建自增主键id。每个APP应用都有独立属于自己的模型，创建了APP之后，在使用它之前，你需要先在settings文件中的INSTALLED_APPS 处，注册models.py文件所在的app名称。看清楚了，是注册app，不是模型，也不是models.py。关于settings，我们前面也有讲解过，具体可查看文章：&lt;a href=&#34;https://www.django.cn/course/show-10.html&#34;&gt;全局配置settings详解&lt;/a&gt;。例如我们创建了名为blog的应用APP则在settings这样写：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;INSTALLED_APPS = [
#...
&amp;#39;blog&amp;#39;,  #我们要添加的应用名
#...
]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;当你每次对模型进行增、删、修改时，我们都需要执行python manage.py makemigrations请务必执命令，然后再执行：python manage.py migrate，让操作实际应用到数据库上。&lt;/p&gt;</description>
    </item>
    <item>
      <title>开源许可证</title>
      <link>https://leochu.work/blog/tech/engineering/%E5%BC%80%E6%BA%90%E8%AE%B8%E5%8F%AF%E8%AF%81/</link>
      <pubDate>Sun, 26 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/engineering/%E5%BC%80%E6%BA%90%E8%AE%B8%E5%8F%AF%E8%AF%81/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Pasted image 20230426182936.png&#34; loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/Pasted%20image%2020230426182936.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>分页</title>
      <link>https://leochu.work/blog/tech/python/django/%E5%88%86%E9%A1%B5/</link>
      <pubDate>Sun, 17 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/python/django/%E5%88%86%E9%A1%B5/</guid>
      <description>&lt;h1 id=&#34;分页-paginator&#34;&gt;分页 Paginator&lt;/h1&gt;
&lt;hr&gt;
&lt;p&gt;分页功能是几乎所有的网站上都需要提供的功能，当你要展示的条目比较多时，必须进行分页，不但能减小数据库读取数据压力，也有利于用户浏览。&lt;/p&gt;
&lt;p&gt;Django又很贴心的为我们提供了一个Paginator分页工具，但是不幸的是，这个工具功能差了点，不好添加CSS样式，所以前端的展示效果比较丑。如果你能力够，自己编写一个分页器，然后提交给Django官方吧，争取替代掉这个当前的分页器，我看好你哦！&lt;/p&gt;
&lt;p&gt;但不管怎么样，当前的Paginator分页器，还是要学一下用一下的。&lt;/p&gt;
&lt;h2 id=&#34;一实例展示&#34;&gt;一、实例展示&lt;/h2&gt;
&lt;p&gt;分页功能位于&lt;code&gt;django.core.paginator&lt;/code&gt;模块。&lt;/p&gt;
&lt;p&gt;向&lt;code&gt;Paginator&lt;/code&gt;提供包含一些对象的列表，以及你想每一页显示几条，比如每页5条、10条、20条、100条等等，它就会为你提供访问的一系列API方法，示例如下：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; from django.core.paginator import Paginator
&amp;gt;&amp;gt;&amp;gt; objects = [&amp;#39;john&amp;#39;, &amp;#39;paul&amp;#39;, &amp;#39;george&amp;#39;, &amp;#39;ringo&amp;#39;]
&amp;gt;&amp;gt;&amp;gt; p = Paginator(objects, 2)  # 对objects进行分页，虽然objects只是个字符串列表，但没关系，一样用。每页显示2条。

&amp;gt;&amp;gt;&amp;gt; p.count   # 对象个数
4
&amp;gt;&amp;gt;&amp;gt; p.num_pages  # 总共几页
2
&amp;gt;&amp;gt;&amp;gt; type(p.page_range)  # `&amp;lt;type &amp;#39;rangeiterator&amp;#39;&amp;gt;` in Python 2.
&amp;lt;class &amp;#39;range_iterator&amp;#39;&amp;gt;
&amp;gt;&amp;gt;&amp;gt; p.page_range  # 分页范围
range(1, 3)

&amp;gt;&amp;gt;&amp;gt; page1 = p.page(1) # 获取第一页
&amp;gt;&amp;gt;&amp;gt; page1
&amp;lt;Page 1 of 2&amp;gt;
&amp;gt;&amp;gt;&amp;gt; page1.object_list # 获取第一页的对象
[&amp;#39;john&amp;#39;, &amp;#39;paul&amp;#39;]

&amp;gt;&amp;gt;&amp;gt; page2 = p.page(2)
&amp;gt;&amp;gt;&amp;gt; page2.object_list
[&amp;#39;george&amp;#39;, &amp;#39;ringo&amp;#39;]
&amp;gt;&amp;gt;&amp;gt; page2.has_next()  # 判断是否有下一页
False
&amp;gt;&amp;gt;&amp;gt; page2.has_previous()# 判断是否有上一页
True
&amp;gt;&amp;gt;&amp;gt; page2.has_other_pages() # 判断是否有其它页
True
&amp;gt;&amp;gt;&amp;gt; page2.next_page_number() # 获取下一页的页码
Traceback (most recent call last):
...
EmptyPage: That page contains no results
&amp;gt;&amp;gt;&amp;gt; page2.previous_page_number() # 获取上一页的页码
1
&amp;gt;&amp;gt;&amp;gt; page2.start_index() # 从1开始计数的当前页的第一个对象
3
&amp;gt;&amp;gt;&amp;gt; page2.end_index() # 从1开始计数的当前页最后1个对象
4

&amp;gt;&amp;gt;&amp;gt; p.page(0)  # 访问不存在的页面
Traceback (most recent call last):
...
EmptyPage: That page number is less than 1
&amp;gt;&amp;gt;&amp;gt; p.page(3) # 访问不存在的页面
Traceback (most recent call last):
...
EmptyPage: That page contains no results
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;简单地说，使用Paginator分四步走：&lt;/p&gt;</description>
    </item>
    <item>
      <title>mongo操作</title>
      <link>https://leochu.work/blog/tech/database/mongodb%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C/</link>
      <pubDate>Sun, 23 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/database/mongodb%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C/</guid>
      <description>&lt;p&gt;根据日期查询数量&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;db.getCollection(&amp;#34;api_invocation_logs&amp;#34;).find({&amp;#34;createdDate&amp;#34;:{&amp;#34;$gte&amp;#34;:ISODate(&amp;#34;2024-01-09T00:00:00Z&amp;#34;),&amp;#34;$lt&amp;#34;:ISODate(&amp;#34;2024-01-10T00:00:00Z&amp;#34;)}}).count()
&lt;/code&gt;&lt;/pre&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-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;db.getCollection(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;waimao_company_info&amp;#39;&lt;/span&gt;).find(&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;numberOfEmployees&amp;#39;&lt;/span&gt;:&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;{$&lt;/span&gt;ne:&lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;&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;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-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mr &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; db.runCommand(&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:#e6db74&#34;&gt;&amp;#34;mapreduce&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;waimao_company_info&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:#e6db74&#34;&gt;&amp;#34;map&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;function&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:#66d9ef&#34;&gt;for&lt;/span&gt; (var &lt;span style=&#34;color:#66d9ef&#34;&gt;key&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;in&lt;/span&gt; this) &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;            emit(&lt;span style=&#34;color:#66d9ef&#34;&gt;key&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;null&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:#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:#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:#e6db74&#34;&gt;&amp;#34;reduce&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;key&lt;/span&gt;, stuff) &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:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;null&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:#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:#e6db74&#34;&gt;&amp;#34;out&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;waimao_company_info&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;_keys&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:#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;db[mr.&lt;span style=&#34;color:#66d9ef&#34;&gt;result&lt;/span&gt;].&lt;span style=&#34;color:#66d9ef&#34;&gt;distinct&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;_id&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;模糊查询&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;db.getCollection(&amp;#34;rocket&amp;#34;).find(
{emails:/@/}
)
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>es操作</title>
      <link>https://leochu.work/blog/tech/database/elasticsearch%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C/</link>
      <pubDate>Sun, 09 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/database/elasticsearch%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C/</guid>
      <description>&lt;h3 id=&#34;es建表&#34;&gt;ES建表&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:#960050;background-color:#1e0010&#34;&gt;PUT&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;http:&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//121.46.197.112:9200/cty_test
&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:#960050;background-color:#1e0010&#34;&gt;Content-Type:&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;application/json&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:#f92672&#34;&gt;&amp;#34;settings&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;number_of_shards&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;5&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;number_of_replicas&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&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;analysis&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;analyzer&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;greek_lowercase_analyzer&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;filter&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:#e6db74&#34;&gt;&amp;#34;lowercase&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;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;custom&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;tokenizer&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;standard&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;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&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;mappings&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;cty_test&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;properties&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;dupId&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;text&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;fields&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;keyword&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;ignore_above&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;256&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;keyword&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;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:#f92672&#34;&gt;&amp;#34;id&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;text&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;fields&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;keyword&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;ignore_above&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;256&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;keyword&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;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:#f92672&#34;&gt;&amp;#34;supplierId&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;long&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;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;addTime&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;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;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;scCountry&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;keyword&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;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;shipName&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;text&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;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;manifestQuanityDouble&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;float&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;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;importerName&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;analyzer&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;greek_lowercase_analyzer&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;text&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;fields&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;keyword&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;ignore_above&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;256&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;keyword&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;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:#f92672&#34;&gt;&amp;#34;tradeType&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;integer&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;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;arriveDate&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;format&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;yyyy-MM-dd&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;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;modeOfTransportation&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;keyword&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;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;modeoftransPortation&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;text&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;fields&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;keyword&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;ignore_above&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;256&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;keyword&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;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:#f92672&#34;&gt;&amp;#34;weight&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;double&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;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&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;es写入数据&#34;&gt;ES写入数据&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:#960050;background-color:#1e0010&#34;&gt;POST&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;http:&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//121.46.197.112:9200/cty_test/cty_test
&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:#960050;background-color:#1e0010&#34;&gt;Content-Type:&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;application/json&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:#f92672&#34;&gt;&amp;#34;dupId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;34324&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;id&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;545435&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;supplierId&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#ae81ff&#34;&gt;43636&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;addTime&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2021-02-05 08:08:08&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;scCountry&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rrr&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;shipName&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;uuu&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;manifestQuanityDouble&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#ae81ff&#34;&gt;55.00&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;importerName&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ccd&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;tradeType&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#ae81ff&#34;&gt;43&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;arriveDate&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2018-09-03&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;weight&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#ae81ff&#34;&gt;33.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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查询某列不为空&lt;/p&gt;</description>
    </item>
    <item>
      <title>sqoop提交参数解析</title>
      <link>https://leochu.work/blog/tech/bigdata/sqoop%E6%8F%90%E4%BA%A4%E5%8F%82%E6%95%B0%E8%A7%A3%E6%9E%90/</link>
      <pubDate>Sun, 14 May 2023 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/sqoop%E6%8F%90%E4%BA%A4%E5%8F%82%E6%95%B0%E8%A7%A3%E6%9E%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-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/opt/cloudera/parcels/CDH/lib/sqoop/bin/sqoop import &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--connect jdbc:&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;mysql://ip:port/T_Cloud_Promote&lt;span style=&#34;color:#f92672&#34;&gt;](&lt;/span&gt;mysql://ipport&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--username rt_center &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--password pwd&lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--query &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;select KeywordID,KeyType,Root,KeywordName,UID,Status,AddDate,UpdateDate,MigrateOID,PromotionStatus,WordType,IsEmphasis,KeywordLength,IsViolate,ViolateWord from T_Cloud_Promote.T_Cloud_User_KeywordLibrary where KeywordID &amp;lt; &lt;/span&gt;$&lt;span style=&#34;color:#e6db74&#34;&gt;[a+10000000] AND KeywordID &amp;gt;= &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;a&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; AND AddDate != &amp;#39;0000-00-00 00:00:00&amp;#39; AND \$CONDITIONS&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--fields-terminated-by &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\001&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--target-dir /tmp/t_cloud_order &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--delete-target-dir &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--hive-import &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--hive-database T_Cloud_Promote &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--hive-table ods_t_cloud_user_keywordlibraryb_tmp_01 &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--null-string &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\\N&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--null-non-string &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\\N&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--hive-drop-import-delims &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--num-mappers &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--split-by KeywordID &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--hive-overwrite  
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&amp;ndash;connect&lt;br&gt;
mysql连接&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ndash;username&lt;br&gt;
用户名&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ndash;password&lt;br&gt;
密码&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ndash;query&lt;br&gt;
条件查询语句&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ndash;fields-terminated-by&lt;br&gt;
分隔符&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ndash;target-dir&lt;br&gt;
临时存放位置&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ndash;delete-target-dir \&lt;br&gt;
程序结束删除文件夹&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ndash;hive-import \&lt;br&gt;
导入到hive&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ndash;hive-database T_Cloud_Promote \&lt;br&gt;
hive的数据库&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ndash;hive-table&lt;br&gt;
hive表&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ndash;null-string &amp;lsquo;\N&amp;rsquo; \&lt;br&gt;
&amp;ndash;null-non-string &amp;lsquo;\N&amp;rsquo; \&lt;br&gt;
转换为hive空&lt;/p&gt;</description>
    </item>
    <item>
      <title>spark提交参数</title>
      <link>https://leochu.work/blog/tech/bigdata/spark%E6%8F%90%E4%BA%A4%E5%8F%82%E6%95%B0/</link>
      <pubDate>Sun, 30 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/spark%E6%8F%90%E4%BA%A4%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;spark-submit --master yarn --conf spark.default.parallelism&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--deploy-mode cluster --driver-memory 4G --executor-memory 4G &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--num-executors &lt;span style=&#34;color:#ae81ff&#34;&gt;40&lt;/span&gt; --executor-cores &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--conf spark.yarn.executor.memoryOverhead&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;5g &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--class com.lz.hbase.CompanyInfo /tmp/test_langzi/original-spark_hbase01-1.0-SNAPSHOT.jar &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--conf spark.dynamicAllocation.maxExecutors&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;40&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>presto</title>
      <link>https://leochu.work/blog/tech/bigdata/presto%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</link>
      <pubDate>Sun, 19 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/presto%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</guid>
      <description>&lt;p&gt;presto操作hive&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;presto-cli --server 172.16.98.183:8050 --catalog hive
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Kafka 常见的脚本汇总</title>
      <link>https://leochu.work/blog/tech/bigdata/kafka%E5%B8%B8%E7%94%A8%E8%84%9A%E6%9C%AC%E6%B1%87%E6%80%BB/</link>
      <pubDate>Sun, 11 Dec 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/kafka%E5%B8%B8%E7%94%A8%E8%84%9A%E6%9C%AC%E6%B1%87%E6%80%BB/</guid>
      <description>&lt;h2 id=&#34;命令行脚本概览&#34;&gt;命令行脚本概览&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;Kafka 默认提供了很多个命令行脚本，用于实现各种各样的功能和运维管理。今天我以 2.2 版本为例，详细地盘点下这些命令行工具。下图展示了 2.2 版本提供的所有命令行脚本。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Pasted image 20230328115823.png&#34; loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/Pasted%20image%2020230328115823.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;从图中我们可以知道，2.2 版本总共提供了 30 个 SHELL 脚本。图中的 windows 实际上是个子目录，里面保存了 Windows 平台下的 BAT 批处理文件。其他的. sh 文件则是 Linux 平台下的标准 SHELL 脚本。&lt;/p&gt;
&lt;p&gt;默认情况下，不加任何参数或携带 &amp;ndash;help 运行 SHELL 文件，会得到该脚本的使用方法说明。下面这张图片展示了 kafka-log-dirs 脚本的调用方法。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Pasted image 20230328115849.png&#34; loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/Pasted%20image%2020230328115849.png&#34;&gt;
有了这些基础的了解，我来逐一地说明这些脚本的用途，然后再给你详细地介绍一些常见的脚本。&lt;/p&gt;
&lt;p&gt;我们先来说说 connect-standalone 和 connect-distributed 两个脚本。这两个脚本是 Kafka Connect 组件的启动脚本。在专栏第 4 讲谈到 Kafka 生态时，我曾说过社区提供了 Kafka Connect 组件，用于实现 Kafka 与外部世界系统之间的数据传输。Kafka Connect 支持单节点的 Standalone 模式，也支持多节点的 Distributed 模式。这两个脚本分别是这两种模式下的启动脚本。鉴于 Kafka Connect 不在我们的讨论范围之内，我就不展开讲了。&lt;/p&gt;
&lt;p&gt;接下来是 kafka-acls 脚本。它是用于设置 Kafka 权限的，比如设置哪些用户可以访问 Kafka 的哪些主题之类的权限。在专栏后面，我会专门来讲 Kafka 安全设置的内容，到时候我们再细聊这个脚本。&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>hadoop默认端口</title>
      <link>https://leochu.work/blog/tech/bigdata/hadoop%E9%BB%98%E8%AE%A4%E7%AB%AF%E5%8F%A3/</link>
      <pubDate>Sun, 10 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/hadoop%E9%BB%98%E8%AE%A4%E7%AB%AF%E5%8F%A3/</guid>
      <description>&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&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;9000&lt;/td&gt;
          &lt;td&gt;fs.defaultFS，如：hdfs://172.25.40.171:9000&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;9001&lt;/td&gt;
          &lt;td&gt;dfs.namenode.rpc-address，DataNode会连接这个端口&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;50070&lt;/td&gt;
          &lt;td&gt;dfs.namenode.http-address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;50470&lt;/td&gt;
          &lt;td&gt;dfs.namenode.https-address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;50100&lt;/td&gt;
          &lt;td&gt;dfs.namenode.backup.address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;50105&lt;/td&gt;
          &lt;td&gt;dfs.namenode.backup.http-address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;50090&lt;/td&gt;
          &lt;td&gt;dfs.namenode.secondary.http-address，如：172.25.39.166:50090&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;50091&lt;/td&gt;
          &lt;td&gt;dfs.namenode.secondary.https-address，如：172.25.39.166:50091&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;50020&lt;/td&gt;
          &lt;td&gt;dfs.datanode.ipc.address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;50075&lt;/td&gt;
          &lt;td&gt;dfs.datanode.http.address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;50475&lt;/td&gt;
          &lt;td&gt;dfs.datanode.https.address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;50010&lt;/td&gt;
          &lt;td&gt;dfs.datanode.address，DataNode的数据传输端口&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8480&lt;/td&gt;
          &lt;td&gt;dfs.journalnode.rpc-address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8481&lt;/td&gt;
          &lt;td&gt;dfs.journalnode.https-address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8032&lt;/td&gt;
          &lt;td&gt;yarn.resourcemanager.address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8088&lt;/td&gt;
          &lt;td&gt;yarn.resourcemanager.webapp.address，YARN的http端口&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8090&lt;/td&gt;
          &lt;td&gt;yarn.resourcemanager.webapp.https.address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8030&lt;/td&gt;
          &lt;td&gt;yarn.resourcemanager.scheduler.address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8031&lt;/td&gt;
          &lt;td&gt;yarn.resourcemanager.resource-tracker.address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8033&lt;/td&gt;
          &lt;td&gt;yarn.resourcemanager.admin.address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8042&lt;/td&gt;
          &lt;td&gt;yarn.nodemanager.webapp.address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8040&lt;/td&gt;
          &lt;td&gt;yarn.nodemanager.localizer.address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8188&lt;/td&gt;
          &lt;td&gt;yarn.timeline-service.webapp.address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;10020&lt;/td&gt;
          &lt;td&gt;mapreduce.jobhistory.address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;19888&lt;/td&gt;
          &lt;td&gt;mapreduce.jobhistory.webapp.address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2888&lt;/td&gt;
          &lt;td&gt;ZooKeeper，如果是Leader，用来监听Follower的连接&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;3888&lt;/td&gt;
          &lt;td&gt;ZooKeeper，用于Leader选举&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2181&lt;/td&gt;
          &lt;td&gt;ZooKeeper，用来监听客户端的连接&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;60010&lt;/td&gt;
          &lt;td&gt;hbase.master.info.port，HMaster的http端口&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;60000&lt;/td&gt;
          &lt;td&gt;hbase.master.port，HMaster的RPC端口&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;60030&lt;/td&gt;
          &lt;td&gt;hbase.regionserver.info.port，HRegionServer的http端口&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;60020&lt;/td&gt;
          &lt;td&gt;hbase.regionserver.port，HRegionServer的RPC端口&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8080&lt;/td&gt;
          &lt;td&gt;hbase.rest.port，HBase REST server的端口&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;10000&lt;/td&gt;
          &lt;td&gt;hive.server2.thrift.port&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;9083&lt;/td&gt;
          &lt;td&gt;hive.metastore.uris&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&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>大数据常用命令</title>
      <link>https://leochu.work/blog/tech/bigdata/%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/</link>
      <pubDate>Sun, 06 Mar 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/</guid>
      <description>&lt;h2 id=&#34;linuxvivim&#34;&gt;Linux（vi/vim）&lt;/h2&gt;
&lt;h3 id=&#34;一般模式&#34;&gt;一般模式&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&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;yy&lt;/td&gt;
          &lt;td&gt;复制光标当前一行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;y数字y&lt;/td&gt;
          &lt;td&gt;复制一段（从第几行到第几行）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;p&lt;/td&gt;
          &lt;td&gt;箭头移动到目的行粘贴&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;u&lt;/td&gt;
          &lt;td&gt;撤销上一步&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;dd&lt;/td&gt;
          &lt;td&gt;删除光标当前行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;d数字d&lt;/td&gt;
          &lt;td&gt;删除光标（含）后多少行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;x&lt;/td&gt;
          &lt;td&gt;删除一个字母，相当于del&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;X&lt;/td&gt;
          &lt;td&gt;删除一个字母，相当于Backspace&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;yw&lt;/td&gt;
          &lt;td&gt;复制一个词&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;dw&lt;/td&gt;
          &lt;td&gt;删除一个词&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;shift+^&lt;/td&gt;
          &lt;td&gt;移动到行头&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;shift+$&lt;/td&gt;
          &lt;td&gt;移动到行尾&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1+shift+g&lt;/td&gt;
          &lt;td&gt;移动到页头，数字&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;shift+g&lt;/td&gt;
          &lt;td&gt;移动到页尾&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;数字N+shift+g&lt;/td&gt;
          &lt;td&gt;移动到目标行&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;编辑模式&#34;&gt;编辑模式&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&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;i&lt;/td&gt;
          &lt;td&gt;当前光标前&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;a&lt;/td&gt;
          &lt;td&gt;当前光标后&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;o&lt;/td&gt;
          &lt;td&gt;当前光标行的下一行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;I&lt;/td&gt;
          &lt;td&gt;光标所在行最前&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A&lt;/td&gt;
          &lt;td&gt;光标所在行最后&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;O&lt;/td&gt;
          &lt;td&gt;当前光标行的上一行&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;指令模式&#34;&gt;指令模式&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&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;:w&lt;/td&gt;
          &lt;td&gt;保存&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;:q&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;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;/要查找的词&lt;/td&gt;
          &lt;td&gt;n 查找下一个，N 往上查找&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;? 要查找的词&lt;/td&gt;
          &lt;td&gt;n是查找上一个，shift+n是往下查找&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;:set nu&lt;/td&gt;
          &lt;td&gt;显示行号&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;:set nonu&lt;/td&gt;
          &lt;td&gt;关闭行号&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;压缩和解压&#34;&gt;压缩和解压&lt;/h3&gt;
&lt;h4 id=&#34;gzipgunzip-压缩&#34;&gt;gzip/gunzip 压缩&lt;/h4&gt;
&lt;p&gt;（1）只能压缩文件不能压缩目录&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
