要使Kettle能正常连接到数据库,需要给Kettle配置()?

点击右侧关注,大数据开发领域最强公众号! 真好玩点击右侧关注,大数据真好玩!

# 列出可安装的桌面环境

此命令显示了系统安装过程中没有被安装的软件组,下面是本例中该命令的部分输出:

yum groupinstall命令安装一组软件包,这组软件包包含了很多单个软件,以及各个软件之间的依赖关系。-y参数表示安装过程中省略确认,避免交互式输入。当安装成功后,可以再次执行yum grouplist命令,从输出中可以看到已经安装的GNOME Desktop。

locale -a命令列出当前系统支持的所有语言包。如果没有zh_CN,则需要先安装一个中文语言包,例如:

如果系统包含中文语言包,但在安装CentOS 7时没有选择中文,安装完成后需要再使用中文,可以按照下面的步骤进行操作。

确定后,会自动将系统语言设置成zh_CN.UTF-8。也可以执行下面的命令修改系统默认语言为中文:

可以在终端输入locale命令查看更改后的系统语言变量,输出如下:

然后执行下面的命令安装中文拼音输入法:

(3)安装配置VNC远程控制

为了能够在远程终端中使用GNOME桌面环境,需要安装配置VNC软件。VNC(Virtual Network Console)是虚拟网络控制台的缩写。它是一款优秀的远程控制工具,是基于UNIX和Linux操作系统的免费开源软件,远程控制能力强大,高效实用。在Linux中,VNC

VNC服务器工具有很多,例如tightvnc、vnc4server、tigervnc、realvnc等。这里选择tigervnc作为VNC服务器。tigervnc包含服务器控制端用于实现vnc服务,其中包含一个名为X0VNC的特殊服务,该服务运行后可以把当前桌面会话远程传输给远端客户端让其操控,而不是传统VNC的虚拟会话桌面模式。执行以下步骤安装配置tigervnc服务器。

命令输出如下,显示当前启动了一个VNC服务器进程:

双击刚才建立的连接,输入并保存初次启动VNC服务器时设置(或者由vncpasswd所设置)的密码,如图2-2所示。

图2-2 输入并保存VNC连接密码

在第一次使用GNOME Desktop时,需要进行一些初始化设置,如配置语言、时区和输入法等。因为我们已经设置了系统的缺省语言为中文,并且安装了拼音输入法,所以缺省选择就是中文。配置好打开的GNOME桌面如图2-3所示,界面显示为中文,并支持中文输入。

也可以随时在GNOME桌面环境中设置语言和时区相关选项,例如执行以下步骤添加中文拼音输入法。

图2-4 设置语言和时区

2. 在图2-4中点击“输入源”下的“+”按钮,在弹出窗口中选择“汉语(中国)” -> “汉语(Intelligent Pinyin)”,如图2-5所示。

图2-5 添加中文拼音输入法

点击图2-5中的“添加”按钮就可添加输入法。缺省使用“Super+空格”组合键切换输入法,Super键就是普通键盘上的Win键。下面还有一步操作是将ibus拼音输入法设置为默认输入方法。如果缺少了这一步,每次重启系统后ibus拼音输入法就不能正常工作。设置方法为,在GNOME桌面点击右键菜单中的“打开终端”,在终端窗口中执行以下命令:

注意一定要在图形界面下的终端窗口而不是字符界面控制台执行命令,如图2-6所示。

图2-6 设置默认输入法

至此,Kettle安装前的准备工作已经完成,Java环境、图形界面、中文支持、远程控制都已配置好。

在sourceforge网站上,每个版本都对应一个独立的目录,目录名就是版本号。例如本专题中使用的是8.3版本,所属目录为Pentaho 8.3。在该目录下包含

可以直接从浏览器中下载,或者使用终端命令行工具(如wget)下载。本例执行下面的命令将Kettle 8.3版本zip文件下载到本地,然后进行解压缩:

Kettle不关心被解压缩到哪个目录下,所以可以根据实际情况来解压缩。例如在Windows开发环境下,一般是在Program Files目录下创建kettle或pentaho目录,然后解压缩到这个目录下。在类UNIX系统下,如果用于开发目的,一般在home目录下创建一个目录。如果用于生产环境,一般创建/opt/kettle或/opt/pentaho目录。

解压缩归档文件会产生一个data-integration目录。最好重新命名这个目录,以反映出原来的版本号。一个比较好的方法就是简单地命名为压缩文件的文件名,但不包括扩展名。我们使用Kettle根目录一词来表示这个安装目录。

重命名目录使之包含版本号,可以让在这个环境下工作的人一眼就看出目录下的Kettle是哪个版本。这也便于在一个目录下同时维护多个Kettle版本,当希望测试新版本或进行Kettle版本升级时就可以看出这种命名方式的优点。

所有Kettle程序都可以通过运行Kettle根目录下的shell脚本来启动。在运行shell脚本上Windows和类UNIX系统基本相同。运行Kettle的shell脚本要求当前的工作目录就是Kettle根目录。这意味着在写自己的shell脚本时,调用Kettle程序之前,需要先切换工作路径到Kettle根目录下。

解压缩之后,Windows用户通过执行Kettle根目录下的bat文件启动Kettle程序。例如,要设计转换或作业可以双击Spoon.bat来启动Spoon。要执行作业可以在命令行下运行Kitchen.bat,或在自己的脚本里调用这个bat文件。

对于类UNIX系统来说,可以执行相应的.sh脚本来运行Kettle,但要在运行之前设置.sh文件可执行。例如,在Kettle根目录下可以通过执行下面的命令让所有.sh文件可执行:

执行完该命令后就可以运行所有脚本了,当然前提是Kettle根目录是当前工作目录。本例在GNOME桌面打开一个终端窗口执行下面的命令,即可启动spoon界面。

(3)创建Spoon快捷启动方式

因为经常要使用Spoon,可能希望在任务栏或桌面上创建一个Spoon的快捷方式。Windows用户可以打开资源管理器到Kettle根目录,然后选中Spoon.bat,在右键弹出菜单中选择“发送到”->“桌面快捷方式”。这样就在桌面上创建了一个快捷方式(.lnk)文件用于启动Spoon。

右键单击新创建的快捷文件,在弹出菜单中选择“属性”。打开的属性对话框里显示了“快捷方式”标签。在这个标签下,“目标”和“起始位置”输入框已经被正确填写,不用编辑这些属性。“更改图标”按钮可以为这个快捷方式选中一个容易识别的图标,一般选择Kettle根目录下的spoon.ico文件。

在GNOME桌面上也可以创建应用的快捷启动方式,但方法比Windows稍微复杂一些。GNOME系统中的桌面快捷方式文件称为 Desktop Entry 文件,以".desktop"为后缀。每个应用程序快捷方式都和一个 Desktop Entry 文件相对应。本例中我们希望使用root用户执行Spoon程序,因此创建/root/桌面/Spoon.desktop文件,内容如下:

Desktop Entry 文件通常以字符串"[Desktop Entry]"开始。文件的内容由若干键值对条目组成。Desktop Entry 文件定义了一系列标准关键字。标准关键字分为必选和可选两种:必选标准关键字必须在 .desktop 文件中被定义;而可选关键字则不必。以下是对本例中所使用关键字的简单描述。

  • Name[必选]:指定了桌面快捷方式显示的名称。

  • Exec[可选]:关键字“Exec”只有在“Type”类型是“Application”时才有意义。“Exec”的值定义了启动指定应用程序所要执行的命令,在此命令是可以带参数的。

  • Terminal[可选]:关键字“Terminal”的值是布尔值(true或false),并且该关键字只有在“Type”类型是“Application”时才有意义。其值指出了相关应用程序(即关键字“Exec”的值)是否在终端窗口中运行。

双击该图标,首次执行会出现如图2-8所示的警告信息。

图2-8 未信任的应用程序启动器提示

点击图2-8中的“Trust and Launch”按钮,信任并启动spoon程序,之后再运行桌面快捷方式将不会弹出未信任应用的警告。同时桌面上对应的图标和名称也会变为如图2-7(b)所示。

与Windows快捷方式类似,点击桌面快捷方式图标右键,在弹出菜单中选择“属性”,点击对话框中的图标,可以选择更换自定义图标。例如选择了spoon.ico作为图标后如图2-7(c)所示。

至此Kettle在Linux上安装的所有技术细节都已完成。

Kettle运行环境内的一些因素会影响其运行方式。这些因素包括配置文件和与Kettle集成在一起的外部软件。我们把这些因素统称为Kettle的配置。将在本节了解到Kettle的配置包括哪些部分,以及应如何管理这些配置。

Kettle运行环境中有几个文件影响了它的运行情况,这些文件可以看成是Kettle配置文件。当Kettle做了环境移植或升级时,这些文件也要随之改变,包括:

.spoonrc文件只用于spoon程序,其余的则用于Kettle里的多个程序。这些文件大部分都存放在.kettle目录下。.kettle目录默认情况下位于操作系统用户的主目录下,每个用户都有自己的主目录(如/home/<user>,这里的user就是操作系统的用户名)。

.kettle目录的位置也可以配置,这需要设置KETTLE_HOME环境变量。例如在生产机器上,可能希望所有用户都使用同一个配置来运行转换和作业,就可以设置KETTLE_HOME使之指向一个目录,这样所有操作系统用户就可以使用相同的配置文件了。与之相反,也可以给某个ETL项目设置一个特定的配置目录,此时需要在运行这个ETL的脚本里设置KETTLE_HOME环境变量。

下面说明每个配置文件的作用。

从名字就可以看出,.spoonrc文件用于存储Spoon程序的运行参数和状态。其它Kettle的程序都不使用这个文件。.spoonrc文件位于.kettle目录下。因为在默认情况下,.kettle目录位于用户主目录下,所以不同用户都使用各自的.spoonrc文件。.spoonrc文件中包括的主要属性如下:

  • 通用的设置和默认值:在Spoon里,这些设置在“选项”对话框的“一般”标签下设置。“选项”对话框可以通过主菜单的“工具” -> “选项”菜单项打开。

  • 外观,例如字体和颜色:在Spoon里,这些都在“选项”对话框的“观感”标签下。

  • 程序状态数据:如最近使用的文件列表。

通常不用手工编辑.spoonrc文件。如果新安装了一个Kettle代替一个旧版本的Kettle,可用旧版本的.spoonrc文件覆盖新安装的.spoonrc文件,这样来保留旧版本Kettle的运行状态。为了保留历史版本以备恢复之需,定时备份.spoonrc文件也是必要的。

Kettle还有一个jdbc.properties文件,保存在Kettle根目录下的simple-jndi子目录下。这个文件用来存储JNDI连接对象的连接参数。Kettle可以用JNDI的方式引用JDBC连接参数,如IP地址、用户认证等,这些连接参数最终用来在转换和作业中构造数据库连接对象。

JNDI是Java Naming and Directory Interface的缩写,是一个Java标准,可以通过一个名字访问数据库服务。注意JNDI只是Kettle指定数据库连接参数的一种方式,数据库连接参数也可以保持在转换或作业的数据库连接对象或资源库里。JNDI数据库连接配置是整个Kettle配置的一部分。

在jdbc.properties文件里,JNDI连接参数以多行文本形式保存,每一行就是一个键值对,等号左右分别是键和值。键包括了JNDI名字和一个属性名,中间用反斜线分隔。属性名前的JNDI名称决定了JNDI连接包括几行参数。以JNDI名称开头的行就构成了建立连接需要的所有参数。如下是一些属性名称:

  • url:用于连接数据库的JDBC URL连接串。

  • user:数据库用户名。

可以按照SampleData的格式,把自己的JNDI名字和连接参数写到jdbc.properties文件里。因为在jdbc.properties里定义的连接可以在转换和作业里使用,用户需要保存好这个文件,至少需要做定时备份。

另外还需要注意部署问题,在部署使用JNDI方式的转换和作业时,记住需要更改部署环境里的jdbc.properties文件。如果开发环境和实际部署环境相同,就可以直接使用开发环境里的jdbc.properties文件。但大多数情况下,开发环境使用的是测试数据库,在把开发好的转换和作业部署到实际生产环境中后,需要更改jdbc.properties的内容,使之指向实际生产数据库。使用JNDI的好处就是部署时不用再更改转换和作业,只需要更改jdbc.properties里的连接参数。

kettle.properties文件是一个通用的保存Kettle属性的文件。属性对Kettle而言就如同环境变量对操作系统的shell命令。它们都是全局字符串变量,用于把作业和转换参数化。例如,可以使用一个属性来保存数据库连接参数、文件路径,或一个用在某个转换里的常量。

kettle.properties文件使用文本编辑器来编辑。一个属性是一个等号分隔的键值对,占据一行。键在等号前面,作为以后使用的属性名,等号后面就是这个属性的值。下面是一个kettle.properties文件的例子:

转换和作业可以通过${属性名}或%%属性名%%的方式来引用kettle.properties里定义的这些属性值,用于对话框里输入项的变量。图2-9显示的是CSV输入步骤对话框。

如图中所示,在文件名字段里不再用硬编码路径,而使用了变量的方式${INPUT_PATH}。对任何带有“$”符号的输入框都可以使用这种变量的输入方式。在运行阶段,这个变量的值就是/home/sakila/import,即在kettle.properties文件里设置的值。

这里属性的使用方式和前面讲过的jdbc.properties里定义的JNDI连接参数的使用方式类似。例如可以在开发和生产环境中使用不同的kettle.properties文件,以便快速切换。尽管使用kettle.properties和jdbc.properties相似,但也有区别。首先,JNDI只用于数据库连接,而属性可用于任何情况。其次,kettle.properties里的属性名字可以是任意名字,而JNDI里的属性名是预先定义好的,只用于JDBC数据库连接。

关于kettle.properties文件还有一点要说明:kettle.properties文件里可以定义用于资源库的一些预定义变量。如果使用资源库保存转换或作业,如下这些预定义变量就可以定义一个默认资源库:

使用Carte服务执行作业需要授权。默认情况下,Carte只支持最基本的授权方式,就是将密码保存在kettle.pwd文件中。kettle.pwd文件位于Kettle根目录下的pwd目录下。kettle.pwd文件的默认内容如下:

最后一行定义了一个用户cluster,以及加密后的密码(这个密码也是cluster)。文件的注释部分说明了这个加密的密码是由Encr.bat或encr.sh脚本生成的。如果使用Carte服务,尤其当Carte服务不在局域网范围内时,就要编辑kettle.pwd文件,至少要更改默认密码。直接使用文本编辑器就可以编辑。  

Kettle可以通过资源库管理转换、作业和数据库连接这样的资源。如果不使用资源库,转换、作业也可以保存在文件里,每一个转换和作业都保存各自的数据库连接。Kettle资源库可以存储在关系数据库里,也可以使用插件存储到其它存储系统,例如存储到一个像SVN这样的版本控制系统。为了使操作资源库更容易,Kettle在repositories.xml文件中保存了所有资源库。repositories.xml文件可以位于两个目录:

  • Carte服务会读取当前启动路径下的repositories.xml文件。如果当前路径下没有,会使用上面的用户主目录下的.kettle目录下的repositories.xml文件。

对开发而言,不用手工编辑这个文件。无论什么时候连接到了资源库,这个文件都由Spoon自动维护。但对部署而言情况就不同了,在部署的转换或作业里会使用资源库的名字,所以在repositories.xml文件里必须要有一个对应的资源库的名字。和上面讲到的jdbc.properties或kettle.properties文件类似,实际运行环境的资源库和开发时使用的资源库往往是不同的。实践中一般直接将repositories.xml文件从开发环境复制到运行环境,并手工编辑这个文件使之匹配运行环境。

Kettle里有一个概念叫共享对象,共享对象就是类似于转换的步骤、数据库连接定义、集群服务器定义等这些可以一次定义,然后在转换和作业里多次引用的对象。共享对象在概念上和资源库有一些重叠,资源库也可以被用来共享数据库连接和集群服务器的定义,但还是有一些区别。资源库往往是一个中央存储,多个开发人员都访问同一个资源库,用来维护整个项目范围内所有可共享的对象。

在Spoon里单击左侧树状列表的“主对象树”标签,选择想共享的对象。右键单击,然后在弹出菜单中选择“Share”。必须保存文件,否则该共享不会被保存。以这种方式创建的共享可以在其它转换或作业里使用(可以在左侧树状列表的“主对象树”标签中找到)。但是,共享的步骤或作业项不会被自动放在画布里,需要把它们从树状列表中拖到画布里,以便在转换或作业里使用。

共享对象存储在shared.xml文件中。默认情况下,shared.xml文件保存在.kettle目录下,.kettle目录位于当前系统用户的主目录下。也可以给shared.xml文件自定义一个存储位置。这样用户就可以在转换或作业里多次使用这些预定义好的共享对象。在转换或作业的设置对话框里可以设置shared.xml文件的位置。对作业来说,在“作业设置”对话框的“设置”标签下。对转换而言,在“转换设置”对话框的“杂项”标签下。

可以使用变量指定共享文件的位置。例如,在转换里可以使用类似下面的路径:

这样不论目录在哪里,所有一个目录下的转换都可以使用同一个共享文件。对部署而言,需要确保任何在开发环境中直接或间接使用的共享文件也要在部署环境中可以找到。一般情况下,在两种环境中,共享文件应该是一样的。所有环境差异的配置应该在kettle.properties文件中设置。

在下面一些情况下,可能要调整一下启动Kettle程序的shell脚本:

  • 给Java classpath增加新的jar包。通常是因为在转换和作业里直接或间接引用了非默认的Java Class文件。

  • 改变Java虚拟机的参数,如可用内存大小。

(1)shell脚本的结构

所有Kettle程序用的shell脚本都类似:

  • 初始化一个classpath的字符串,字符串里包括几个Kettle最核心的jar文件。

  • 将和程序相关的其它一些jar包都包含在classpath字符串中。例如Spoon启动时,要包含swt.jar文件,用于生成Spoon图形界面。

  • 构造Java虚拟机选项字符串,前面构造的classpath字符串也包含在这个字符串里。虚拟机选项设置了最大内存大小。

  • 利用上面构造好的虚拟机选项字符串,构造最终可以运行的Java可执行程序的字符串,包括Java可执行程序、虚拟机选项、要启动的Java类名。

上面描述的脚本结构是Kettle 3.2和以前版本的脚本文件结构,Kettle 4.0和以后版本都统一使用Pentaho的Launcher作为启动程序。

在Kettle的转换里可以写Java脚本,Java脚本可能会引用第三方jar包。例如可以在“Java Script”步骤里实例化一个对象,并调用对象的方法,或者在“User defined Java expression”步骤里直接写Java表达式。当编写Java脚本或表达式时,需要注意classpath中有Java脚本里使用的各种Java类。最简单的方法就是在libext目录下新建一个目录,然后把需要的jar包都放入该目录下。因为在.sh脚本里可以加载libext目录下的所有jar文件(包括子目录),见下面的.sh文件里的代码

这个sh脚本遍历libext目录下(包括各级子目录)的所有jar和zip文件,并添加到classpath中。在Kettle

(3)改变虚拟机堆大小

所有Kettle启动脚本都指定了最大堆大小。如在spoon.sh中,有类似下面的语句:

当运行转换或作业时,如果遇到Out of Memory的错误,或者运行Java的机器有更多的物理内存可用,可以在这里增加堆的大小。只需把2048改成更大的数字,不要修改其它任何地方。

(4)修改图形工具包环境

例如,spoon.sh文件中有一个环境变量配置为export SWT_GTK3=0。使用该默认配置在创建资源库时会报类似下面的错误:

随Kettle带了很多种数据库的JDBC驱动。一般一个驱动就是一个jar文件。Kettle把所有JDBC驱动都保存在lib目录下。

要增加新的JDBC驱动,只要把相应的jar文件放到lib目录下即可。Kettle的各种启动脚本会自动加载lib下的所有jar文件到classpath。添加新数据库的JDBC驱动jar包,不会对正在运行的Kettle程序起作用。需要将Kettle程序停止,添加JDBC jar包后再启动才生效。

当升级或替换驱动时,要确保删除了旧的jar文件。如果想暂时保留旧的jar文件,可以把jar文件放在Kettle之外的目录中,以避免旧的jar包也被意外加载。

  • 选择操作系统需要考虑的问题。

  • 安装配置中文字符集和输入法。

  • 使用脚本启动Kettle程序。

  • 在GNOME桌面配置Spoon快捷启动方式。

  • Kettle的主要配置文件。

下一篇引入本专题涉及的另一个关键技术,Hadoop及其生态圈,实际演示Kettle对Hadoop的支持。

}

3、配置Kettle (在网上搜索有详细的引导步骤)。

注意:绿色不需要安装,只需要解压缩,不需要最新版本.在某些情况下,最新版本可能会出现一些问题,

三:kettle的基本概念(作业和转换)

1. Kettle工具的运行分为两个级别:转换和作业。 这两个级别的主要区别是数据传输和执行方法

1 )变换的定义:变换是ETL方法求解的重要部分之一,主要用于数据提取、变换和加载等,其本质是图形数据变换结构逻辑结构。 包括读取文件、过滤输出行、清除数据或将数据加载到数据库中等步骤,正在转换的步骤通过跃点连接。

上述转换示例实现了从数据库读取数据并将数据写入文本文件。 此转换包括步骤、跳转、注释和数据行。 具体说明如下。

3 )步骤)转换过程中的基本组件(也称为控件)显示为图标。

特性: a .每个步骤都需要一个名称,且该名称在转换范围内是唯一的;

b .各步骤可读,写入数据行,生成步骤除外。 该步骤仅用于写入数据; 步骤包括:输入跳转并接收数据;

c .大多数步骤都有多个输出跳,可以将一个步骤的数据发送设置为按顺序发送和复制发送

d .在执行过渡时,一个线程执行一个步骤和步骤的多个复制,所有步骤的线程几乎同时执行,数据行在步骤之间连续跳转。

2 )跳转)数据通道。 用于连接两个步骤,可以将元数据从一个步骤传递到另一个步骤,支持分发和复制等方式。

注:由于每个步骤都是单独的线程,因此在启动转换时,每个步骤都会创建各自的线程,接收并推送数据以使并发程序达到最高。 因此,数据处理的顺序与节点的连接箭头的顺序不同。 由于所有正在转换的步骤都依赖于上一个步骤来获取字段值,因此在创建新的跳转时,不能在转换过程中循环。

3 )注释)在工作中以文本显示。 为了提高过程的可读性,放在任何位置都可以。 (评论不参与程序的处理)

4 )数据行)数据以数据行的形式按步骤流动。 一个数据行是从零到多个字段的集合。 Kettle字段的数据类型共有10种。 具体请参照下图。

1 )作业定义:个作业包含一个或多个作业项,这些作业项按某种顺序执行。 作业的执行顺序由作业项之间的跳转和每个作业项的执行结果决定。 在任务栏中选择“文件”-“新建”-“作业”-“命令”。 下图示例

A; 工作组成部分:工作项目是

Kettle使用一种回溯算法执行作业里的所有作业项 并且作业项的执行结果(真/假)决定执行的路径。回潮算法: 假设执行到一条路径的某个 节点时,,依次执行这个节点的所有子路径,直到没有可执行的子路径,就返 回该节点的上一个节点,如此反复。

作业项的执行结果不仅决定了作业的执行路径,还向下一个作业项传递了一个结果对象,结果对象包含一组数据行、一组文件名、行数(读、写、输人、输出、更新、删除、拒绝的行数)、错误数(转换中的错误数)以及脚本作业项的退出状态。

   主要包括输入,输出,转换,应用,流程,脚本,查询,连接,检验,作业,映射,批量加载等     功能。转换功能常用控件如下图所示:

主要包括通用,邮件,文件管理,条件,脚本,批量加载等。下图描述Kettle作业常用功能的控件:

数据库种类多,因此Kettle工具的数据库连接窗口包含多种数据库类型

}

hive作为数据仓库的载体,一般情况下会经常把数据保存到hive中。

本章通过抽取mongodb的数据保存到hive的案例来学习连接hive。

一种是通过hiveserver2使用JDBC的连接方式,这种是一条一条的进行写入,可能速度上要慢一些。
一种是使用Hadoop File Input方式把文件放入hdfs,然后使用hive命令来加载。适合大块批量的数据保存到hive。

在之前的文章中已经了解了hiveserver2。

下载的包如下,都是hive开头的jar包:

修改配置后以及新增jar包后需要重启kettle才生效。
重启后尝试建立DB连接如下:
主对象树–》DB连接右键新建—》填写相关参数(参数与自己的hivesever2的ip端口数据库名以及可登陆linux系统访问hiveserver2的用户名对应)

MongoDB Input输入ip和端口以及数据库集合和获取字段。

表输出选择新建的DB连接hive2以及浏览选择数据库和表。
如果表还没新建则需要先在hive shell中新建表,数据结构需要与输出对应。

在hive的集群中使用命令查看数据:

可以看到已经有数据写入了:

但发现记录是一条一条插入hive的,因为hive的insert也会执行mapreduce,所以一条一条的插入速度非常慢。

发现使用JDBC方式进行导入是一条一条记录进行导入的,速度非常尴尬,几乎不可用。
还有另外一种思路可以大数据量的进行处理。

最终配置修改如下,测试成功:
有一部分因为没有root账户密码权限的问题仍然错误,不过不影响,只要Hadoop File System Connection 没报错就行。

MongoDB Input输入ip和端口以及数据库集合和获取字段。

在内容栏里面注意标红的几个配置

头部表示是否显示列名,这里去掉勾选。

使用SQL脚本之前需要新建hive表连接,步骤如下:
主对象树–》DB连接右键新建—》填写相关参数(参数与自己的hivesever2的ip端口数据库名以及可访问hdfs文件存储路径的用户名对应,这里使用hdfs)

这里使用SQL脚本新建表并且加载数据,数据结构需要与输出对应。

使用命令查看hdfs中的文件

使用命令查看hdfs中的文件中的数据数量,确保完整性。

查看family表里的数据使用命令

kettle执行顺序之可能存在的问题

这是因为kettle的执行顺序导致的。
kettle中转换和作业的执行顺序:
1、一个作业内的转换,是顺序执行的。
2、一个转换内的步骤是并行执行的。
3、作业内不支持事务,转换内支持事务。
根据业务需要,通常需要在转换内顺序执行,小技巧如下:
1、执行SQL是优先于所有步骤。
2、使用“阻塞数据直到步骤都完成”,确保其他数据步骤都完成再进行下一步骤。
1、设置转换只使用一个事务。转换设置–>夹项–>使用唯一连接。
2、设置转换内的表插入等数据库的操作不进行批量提交。”提交记录数量”–>0

也就是说 转换中的执行SQL会先执行,所以Hadoop File Output输出没有完成时,就进行加载了,这样会有问题。
解决方法加入阻塞数据流程。
阻塞数据在核心对象-流程目录。

3秒钟完成导入hive成功!!!

}

我要回帖

更多关于 怎么连接数据库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信