全文内容来自:Sqoop工具模块之sqoop-import
一、常用命令列举
序号
命令
类
说明
1
import
ImportTool
将数据导入到集群
2
export
ExportTool
将集群数据导出
3
codegen
CodeGenTool
获取数据库中某张表数据生成Java并打包Jar
4
create-hive-table
CreateHiveTableTool
创建 Hive 表
5
eval
EvalSqlTool
查看 SQL 执行结果
6
import-all-tables
ImportAllTablesTool
导入某个数据库下所有表到 HDFS 中
7
list-databases
ListDatabasesTool
列出所有数据库名
8
list-tables
ListTablesTool
列出某个数据库下所有表
9
help
HelpTool
打印 sqoop 帮助信息
10
version
VersionTool
打印 sqoop 版本信息
主要记录 import 命令。
二、import 参数
2.1、连接参数
--connect < jdbc-uri> :指定JDBC连接字符串。
--connection-manager < class-name> :指定要使用的连接管理器类。
--driver < class-name> :手动指定要使用的JDBC驱动程序类。
--hadoop-mapred-home < dir> :覆盖$ HADOOP_MAPRED_HOME
--help:打印使用说明。
--password-file:为包含认证密码的文件设置路径。
-P:从控制台读取密码。
--password < password> :设置验证密码。
--username < username> :设置验证用户名。
--verbose:在控制台打印更多信息。
--connection-param-file < filename> :提供连接参数的可选属性文件。
--relaxed-isolation:将连接事务隔离设置为对映射器未提交的读取。
2.2、 安全验证参数
--validate:启用对复制数据的验证,仅支持单个表复制。
--validator < class-name> :指定要使用的验证程序类。
--validation-threshold < class-name> :指定要使用的验证阈值类。
--validation-failurehandler < class-name> :指定要使用的验证失败处理程序类。
2.3、导入控制参数
以下是 Sqoop 在导入数据时,可选的控制导入数据内容的参数:
--append:将数据追加到HDFS中的现有数据集。
--as-avrodatafile:将数据导入Avro数据文件。
--as-sequencefile:将数据导入到SequenceFiles。
--as-textfile:以纯文本形式导入数据(Sqoop导入的默认方式)。
--as-parquetfile:将数据导入Parquet文件。
--boundary-query < statement> :边界查询用于创建分割。
--columns < col,col,col…> :从表中选择要导入列。
--delete-target-dir:删除导入目标目录(如果存在)。
--direct:如果数据库存在,则使用直接连接器。
--fetch-size < n> :一次从数据库读取的条目数。
--inline-lob-limit < n> :设置内联LOB的最大大小。
-m,--num-mappers < n> :使用n个map任务执行导入。
-e,--query < statement> :导入结果statement。
--split-by < column-name> :用于分割表单元的表格列。不能与--autoreset-to-one-mapper选项一起使用 。
--split-limit < n> :每个拆分大小的上限。这仅适用于整数和日期列。对于日期或时间戳字段,它以秒计算。
--autoreset-to-one-mapper:如果表中没有主键并且没有提供分割列,导入应该使用一个mapper。不能与--split-by < col> 选项一起使用。
--table < table-name> :导入的表名。
--target-dir < dir> :目标HDFS目录。
--temporary-rootdir < dir> :导入期间创建的临时文件的HDFS目录(覆盖默认的“_sqoop”)。
--warehouse-dir < dir> :表目的地的HDFS父级目录。
--where < where clause> :在导入过程中使用WHERE子句。
-z,--compress:启用压缩。
--compression-codec < c> :使用Hadoop编解码器(默认gzip)。
--null-string < null-string> :要为字符串列写入空值的字符串。
--null-non-string < null-string> :要为非字符串列写入空值的字符串。
--null-string和--null-non-string参数都是可选的。如果未指定,那么字符串“null”将被使用。
2.4、Hive参数
以下是导入到 Hive 中时可选的参数:
--hive-home < dir> :覆盖 $HIVE_HOME 。
--hive-import:将表导入Hive(如果没有设置,则使用Hive的默认分隔符。)
--hive-overwrite:覆盖Hive表中的现有数据。
--create-hive-table:如果设置,那么如果存在目标hivetable,作业将失败。默认情况下,此属性为false。
--hive-table < table-name> :设置导入到Hive时要使用的表名。
--hive-drop-import-delims:导入到Hive时,从字符串字段中删除\n、\r和\01。
--hive-delims-replacement:在导入到Hive时,将字符串字段中的\n、\r和\01替换为用户定义的字符串。
--hive-partition-key:分配到分区的Hive字段的名称。
--hive-partition-value < v> :作为该任务导入到Hive中的分区键的字符串值。
--map-column-hive < map> :覆盖从SQL类型到配置列的Hive类型的默认映射。如果在此参数中指定逗号,请使用URL编码的键和值,例如,使用DECIMAL(1%2C%201)而不是DECIMAL(1,1)。
三、文件格式
Sqoop 提供了两种文件格式用于存储导入的数据,分别是:分隔文本和 SequenceFiles。
3.1、分割文本
分隔文本是默认的导入数据存储格式。也可以使用 --as-textfile 参数显式指定。该方式将每个基于字符串的表示形式的记录写入分割文件中,在各个行和列之间使用分隔符进行行列的划分。分隔符可以是逗号、制表符或其他字符。
以下是基于分割文本导入数据的示例:
1,这里是一条消息,2010-05-01
2,新年快乐!,2010-01-01
3,另一个消息,2009-11-12
分隔文本适用于大多数非二进制数据类型。它也支持其他工具的进一步操作,例如 Hive。
3.2、SequenceFiles
SequenceFiles 是一种二进制格式,它将单个记录存储在自定义的特定的数据类型记录中。这些数据类型表现为 Java 类。Sqoop 会自动生成这些数据类型。这种格式支持二进制表示中所有数据的准确存储,适用于存储二进制数据(例如,VARBINARY列)或将主要由自定义 MapReduce 程序操作的数据。从SequenceFiles 读取性能高于从文本文件读取数据,因为记录不需要被解析。
Avro 数据文件是一种紧凑且高效的二进制格式,可与使用其他编程语言编写的应用程序进行交互操作。Avro 还支持版本控制,以便在添加或删除列时,将以前导入的数据文件和新文件一起处理。
3.3、压缩
默认情况下,导入的数据未被压缩。可以使用 -z 或 --compress 参数的deflate(gzip)算法来压缩数据,或使用 --compression-codec 参数指定 Hadoop 压缩编解码器。压缩可以用于 SequenceFile,文本和 Avro 文件。
四、参数详解
4.1、用户名密码
–username 参数用来提供数据库的用户名。
Sqoop 提供了几种不同的提交密码的方法,下面详细描述数据库提供安全和不安全的密码提交方式。
安全提交密码的方式
将密码保存在具有 400 权限的用户主目录中的文件中,并使用 --password-file 参数指定该文件的路径,这是输入密码的首选方法。
Sqoop 会从文件中读取密码,并使用安全的方式将它传递给 MapReduce 集群,而不必在配置中公开密码。包含密码的文件可以位于本地磁盘或 HDFS上 。
例如:
$ sqoop import \
--connect jdbc:mysql://database.example.com/employees \
--username venkatesh \
--password-file ${user.home} /.password
Sqoop 将读取密码文件的全部内容用作密码。包括空格字符。需要确保密码文件仅包含属于密码的字符。
在命令行中,可以使用 echo -n 来存储密码,这样将不会产生多余字符。
例如:存储 secret 为密码,可以使用如下命令:
echo -n "secret" > password.file
别名的方式
Hadoop 2.6.0 提供了一个 API 来将密码存储与应用程序分开。有一个新的credential 命令行工具来管理密码及其别名。密码与其别名一起存储在密码保护的密钥库中。
使用 Credential Provider 工具存储密码并且 Hadoop 配置已经适当更新后,所有应用程序都可以选择使用别名代替实际密码,并在运行时解析别名以供使用密码。
用法示例如下所示:
$ sqoop import \
--connect jdbc:mysql://database.example.com/employees \
--username dbuser \
--password-alias mydb.password.alias
直接通过 --password 参数是不安全的 。
4.2、控制导入数据相关参数
Sqoop 通常以表格为单位的方式导入数据。导入的数据各个节点都是可选的,例如要导入的表、表中的字段、表中的数据等等。
4.2.1、选择表
–table 参数用来选择要导入的表。
例如:–table employees。
该参数还可以标识数据库中的一张表或其他类似表的实体。
默认情况下,表格中的所有列都被选中用于导入。导入的数据以“自然顺序”写入HDFS。
例如:包含列A,B和C的表数据导入结果如下:
A1,B1,C1
A2,B2,C2
...
4.2.2、选择字段
导入的列是可选的,使用 --columns 参数控制列的数量以及排序。使用“,”号进行列分割。
例如:
--columns "name,employee_id,jobtitle"
4.2.3、选择数据内容
导入的数据也是可选的,使用 --where 参数可以附加一个 WHERE 子句来选择要导入的数据。默认情况下,Sqoop 生成表单的语句如下:
SELECT FROM
例如:–where “id > 400”。只有列 id 值大于 400 的行才会被导入。
4.2.4、选择数据分割边界
默认情况下,Sqoop 使用 select min(),max() from
查询找出创建分割的边界。在某些情况下,这个查询不是最优化的,所以可以使用 --boundary-query 参数指定列作为边界。
4.2.5、导入查询结果集
Sqoop 也可以导入任意 SQL 查询的结果集。除了使用的 --table,–columns 和 --where 参数,还可以指定 --query 的参数,其参数值为简单 SQL 语句。
自定义查询 SQL,语句要有 $CONDITIONS 关键字,作用是动态替换。
导入查询结果集时,必须使用 --target-dir 参数指定目标目录。
如果要启动多个 mapper 并行执行导入的话,则每个 mapper 都需要执行查询的语句,这样就需要 Sqoop 推断出每个进程需要执行的任务边界,那么就需要使用 --split-by 指定一个列来进行任务边界判断的依据,这个列最好是整数类型而且没有跳跃值的列,这样可以使每个进程能够得到均分的任务。
$ sqoop import \
--query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS ' \
-m 1 --target-dir /user/foo/joinresults
注意:如果使用双引号(“)将查询语句引起来的话,则必须使用 $CONDITIONS 进行转义,而不是 $CONDITIONS, 转义之后 shell 才会将其视为 shell 变量。双引号查询语句如下所示:
"SELECT * FROM x WHERE a='foo' AND \$CONDITIONS"
4.3、控制并行相关参数
从数据库导入数据的时候可以使用 -m 或 --num-mappers 参数来增加导入任务的并行。这些参数中的每一个参数值都是整数,该值与使用的并行度相对应。默认情况下,使用四个任务。有些数据库可能会通过将此值增加到8或16来提高性能。
注意:
1.不要将并行度提高到大于 MapReduce 集群中可用的最大数量,如果超过,任务将连续运行,并可能增加执行导入所需的时间。
2.不要将并行度设置的高于数据库可以合理支持的程度。例如:将100个并发客户端连接到数据库可能会增加数据库服务器的负载,从而导致性能受到影响。
在执行并行导入时,Sqoop 需要一个可以分割工作负载的标准。Sqoop 使用列来分割工作量。默认情况下,Sqoop 将识别表中的主键列(如果存在)并将其用作拆分列。分割列的低值和高值从数据库中检索,并且 mapper 任务在总范围的大小均匀的分量上进行操作。
例如:有一个表的主键列id最小值为0,最大值为 1000,并且 Sqoop 指向使用4个任务,则 Sqoop 将运行四个进程,每个进程都执行如下的 SQL 语句:
SELECT * FROM sometable WHERE id >= lo AND id < hi
每个 mapper 任务的(lo, hi)的值分别对应为(0,250),(250,500),(500,750)和(750,1001)。
可以使用 --split-limit 参数替换 --num-mapers 参数。使用 --split-limit 参数会限制所创建的拆分部分的大小。如果创建的分割大小大于此参数中指定的大小,则分割将根据此限制调整大小,并且分割的数量也根据此 项变化。如果根据 --num-mappers 参数计算出的分割大小超过了 --split-limit 参数设置的大小,那么将增加实际的 mapper 数量。如果- -split-limit 参数中指定的值为0或负数,则该参数将被全部忽略,分割大小将根据 mapper 的数量计算。
如果一个表没有定义主键并且 --split-by 参数也没有指定,那么导入将会失败,除非使用 --num-mappers 1选项或使用 --autoreset-to-one-mapper 选项将mapper 的数量显式设置为1。–autoreset-to-one-mapper 选项通常与 import-all-tables 工具一起使用,自动处理没有主键的表。
4.4、控制导入过程
默认情况下,导入过程将使用供应商提供的 JDBC 导入通道。一些数据库可以使用特定的数据移动工具以更高性能的方式执行导入。
MySQL 提供的 mysqldump 工具可以非常快速地将数据从 MySQL 导出到其他系统。Sqoop 可以通过 –direct 参数指定该工具导入,比使用 JDBC 性能更高。
默认情况下,Sqoop 将数据导入 HDFS 中一个名为 foo 的目录中。
例如,用户名是 someuser,则导入工具会将数据写入 /user/someuser/foo/(files)中。
可以使用 –warehouse-dir 参数调整导入的这个目录。
例如:
$ sqoop import \
--connnect < connect-str> \
--table foo \
--warehouse-dir /shared
该命令将数据写入目录 /shared/foo/ 目录下的文件中。
可以明确地选择目标目录,如下所示:
$ sqoop import \
--connnect < connect-str> \
--table foo \
--target-dir /dest
上述命令将文件导入到/dest目录中。–target-dir 与 --warehouse-dir 不相容。只能使用两者之一。
使用 direct 模式时,可以指定应传递给底层工具的其他参数。如果参数–是在命令行上 出现的,则–后的参数将直接发送到底层工具。
例如,以下内容将调整 mysqldump 使用的字符集:
$ sqoop import \
--connect jdbc:mysql://server.foo.com/db \
--table bar \
--direct -- --default-character-set= latin1
4.5、控制类型映射
Sqoop 预先配置为将大多数 SQL 类型映射到适当的 Java 或 Hive 类型。默认映射可能并不适合每个场景,可以使用 --map-column-java(用于更改映射到 Java)或 --map-column-hive(用于更改 Hive 映射)进行更改。
--map-column-java < mapping> :指定已配置列从SQL到Java类型的映射。
--map-column-hive < mapping> :指定从SQL到配置列Hive类型的映射。
Sqoop 以<列名称> = <新类型>形式的逗号分隔映射列表。
例如:
$ sqoop import .. . --map-column-java id = String,value = Integer
注意:在–map-column-hive 选项中需要逗号分割,应使用 URL 编码的键和值,例如,使用 DECIMAL(1%2C%201)而不是 DECIMAL(1,1)。如果某些配置的映射不可用,Sqoop 会抛出异常。
4.6、增量导入
Sqoop 提供了一种增量导入模式,可用于检索比以前导入的一组行更新的行数据。
以下参数控制增量导入:
--check-column ( col) :要导入某些行时要检查的列。(该列不能是CHAR/NCHAR/VARCHAR/VARNCHAR/LONGVARCHAR/LONGNVARCHAR类型)。
--incremental ( mode) :指定Sqoop如何确定哪些行是新的。此项参数的值有append 和 lastmodified 两个。
--last-value ( value) :指定先前导入中的检查列的最大值。
Sqoop支持两种方式的增量导入:append 和 lastmodified。可以使用该 --incremental 参数来指定要执行的增量导入的方式。
4.6.1、append
append 方式在导入表格时,必须指定起始行 id 列所对应的值。可以通过 --check-column 指定该行包含的列。Sqoop 导入行的检查列的值是否大于 --last-value 参数指定的值。
4.6.2、lastmodified
Sqoop 支持的备用表更新策略称为 lastmodified 模式。
当源表的行更新时,每次更新都会将最后更新的列的值设置为当前的时间戳,如果行检查的列的时间戳比 --last-value 指定的时间戳新,那么该行会被导入。
在增量导入结束时,–last-value 应为后续导入指定的值打印到屏幕上。在运行后续导入时,–last-value 会指定上次的值以确保导入新的数据。这是增量导入自动处理的,这也是执行循环增量导入的首选机制。
五、Hive相关参数
Sqoop 的导入工具的主要功能是将数据上传到 HDFS 中的文件中。如果 Hive Metastore 与 HDFS 集群相关联,则 Sqoop 还可以将数据导入到 Hive 中,并执行CREATE TABLE 语句来定义 Hive 中的数据布局。将数据导入 Hive 中非常简单,只需要在命令中加入 --hive-import 参数即可。
5.1、覆盖表格
如果 Hive 中表已经存在,可以使用 --hive-overwrite 参数指定要替换表。然后将数据导入 HDFS 或省略此步骤,Sqoop 还将生成一个 Hive 脚本,其中包含 CREATE TABLE 语句和 LOAD DATA INPATH 语句。
5.2、指定目录
脚本将在安装了 Sqoop 的机器上运行。如果安装了多个 Hive,或者没有配置 hive的环境变量 $PATH,可以使用 --hive-home 参数来指定 Hive 的安装目录。Sqoop的 P A T H 一 般 为 : PATH 一般为: P A T H 一 般 为 : HIVE_HOME/bin/hive。
注意:将数据导入到 Hive 中不能使用 --as-avrodatafile 和 --assequencefile 两种文件的存储方式。
5.3、指定分隔符
如果数据库的数据内容包含Hive的缺省行分隔符(\n和\r字符)或列分隔符(\01字符)的字符串字段,则使用 Sqoop 将数据导入到Hive中时会遇到问题。(导入后发现数据错位了,或者有好多原来有值的字段都变成了 NULL,就是因为原表varchar 类型的字段中可能含有\n\r等一些特殊字符。 )
可以使用 --hive-drop-import-delims 选项在导入时删除这些字符,以保证数据与Hive 的文本数据格式兼容。或者,可以使用该 --hive-delims-replacement 选项在导入时将这些字符替换为自定义的字符串,以保证数据与 Hive 的文本数据格式兼容。
如果使用 --hive-import 参数并没有设置分隔符,则使用 Hive 的默认分隔符:字段分隔符为 ^A,记录分隔符为 \n。
Sqoop 将默认导入 NULL 值作为字符串 null。Hive 使用字符串 \N 来表示 NULL 值,因此在将数据导入 Hive 中时 NULL 将无法被正确识别。(将原来为 null 的值导入的时候转化为 null 的字符串,不是真正意义上面的 null 值,所以当使用 is null 的时候就匹配不到数据。)
如果想要在数据导入 Hive 时正确地处理 NULL,可以使用参数 --null-string 和 --null-non-string。
如果想要在数据导出 Hive 时正确的处理 NULL,可以使用参数 --input-null-string 和 --input-null-non-string。
Sqoop 在生成的代码中需要使用这些参数,所以需要正确地将值转义 \N 为 \N:
$ sqoop import .. . --null-string '\\N' --null-non-string '\\N'
5.4、指定表名
Hive 中使用的表名默认情况下与源表的名称相同。也可以使用 --hive-table 选项控制输出表名称。
5.5、指定分区
Hive 可以将数据放入分区以提高查询性能。Sqoop 可以通过指定 --hive-partition-key(hive分区字段) 和 --hive-partition-value(hive分区值) 参数将数据导入 Hive 的特定分区。分区值必须是一个字符串。
你可能感兴趣的:(Sqoop)
本地Apache Hive的Linux服务器集群复制数据到SQL Server数据库的分步流程
weixin_30777913
数据库 数据仓库 hive sqlserver
我们已经有安装ApacheHive的Linux服务器集群,它可以连接到一个SQLServerRDS数据库,需要在该Linux服务器上安装配置sqoop,然后将Hive中所有的表数据复制到SQLServerRDS数据库。以下是分步指南,用于在Linux服务器上安装配置Sqoop并将Hive表数据迁移至SQLServerRDS:1.安装Sqoop步骤:下载Sqoop前往ApacheSqoop下载页面,
大数据开发的底层逻辑是什么?
瑰茵
大数据
大数据开发的底层逻辑主要围绕数据的生命周期进行,包括数据的采集、存储、处理、分析和可视化等环节。以下是大数据开发的一些关键底层逻辑:数据采集:目的:从不同的数据源(如日志文件、数据库、传感器等)收集数据。方法:使用数据采集工具(如ApacheFlume、ApacheKafka、ApacheSqoop)来捕获和传输数据。数据存储:目的:将收集到的数据存储在可靠且可扩展的存储系统中。方法:使用分布式文
Sqoop数据导出 第3关:Hive数据导出至MySQL中
是草莓熊吖
sqoop Educoder hive hadoop 数据仓库 sqoop
为了完成本关任务,你需要掌握:Hive数据导出至MySQL中。Hive数据导入MySQL中MySQL建表因为之前已经创建过数据库了,我们直接使用之前的数据库hdfsdb,在数据库中建表project,表结构如下:名类状态pro_noint主键,序号pro_namevarchar(20)课程名pro_teachervarchar(20)课程老师#首先进入MySQLmysql-uroot-p12312
把hive中的数据导出到mysql
樱浅沐冰
笔记 hadoop hive mysql
注意事项!!!!1.hive中的表的字段和类型必须和mysql表中的字段和类型一样不如hive中的stnamevarchar(50),那么mysql中的字段和类型也必须为stnamestring2.sqoopexport--connectjdbc:mysql://localhost:3306/xiandian--usernameroot--passwordbigdata--tablem1--hca
Hive数据仓库中的数据导出到MySQL的数据表不成功
sin2201
出错问题 数据仓库 hive mysql
可能的原因:(1)没有下载flume和sqoop(2)权限问题:因为MySQL数据库拒绝了root用户从hadoop3主机的连接请求,root用户没有从hadoop3主机进行连接的权限解决:通过MySQL的授权命令来授予权限mysql>GRANTALLPRIVILEGESONsqoop_weblog.*TO'root'@'hadoop3'IDENTIFIEDBY'2020';QueryOK,0ro
基于飞腾平台的Sqoop的安装配置
【写在前面】飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。点击这里开始你的技术升级之旅吧本文分享至飞腾开发者平台《飞腾平台Sqoop1.99
SeaTunnel 与 DataX 、Sqoop、Flume、Flink CDC 对比
不二人生
# 数据集成工具 SeaTunnel
文章目录SeaTunnel与DataX、Sqoop、Flume、FlinkCDC对比同类产品横向对比2.1、高可用、健壮的容错机制2.2、部署难度和运行模式2.3、支持的数据源丰富度2.4、内存资源占用2.5、数据库连接占用2.6、自动建表2.7、整库同步2.8、断点续传2.9、多引擎支持2.10、数据转换算子2.11、性能2.12、离线同步2.13、增量同步&实时同步2.14、CDC同步2.15
大数据-257 离线数仓 - 数据质量监控 监控方法 Griffin架构
武子康
大数据 离线数仓 大数据 数据仓库 java 后端 hadoop hive
点一下关注吧!!!非常感谢!!持续更新!!!Java篇开始了!目前开始更新MyBatis,一起深入浅出!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(已
hive学习笔记之五:分桶
程序员欣宸
欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;《hive学习笔记》系列导航基本数据类型复杂数据类型内部表和外部表分区表分桶HiveQL基础内置函数Sqoop基础UDF用户自定义聚合函数(UDAF)UDTF本篇概览本文是《hive学习笔记》的第五篇
学习大数据DAY43 Sqoop 安装,配置环境和使用
工科小石头
大数据培训 学习 大数据 sqoop hive hadoop
目录sqoop安装配置mysqlsqoop安装sqoop指令集sqoop使用sqoop创建hive表sqoop全量导入表sqoop增量导入表sqoop全量导出表sqoop分区表导入表sqoop分区表导出表上机练习sqoop安装配置mysqlcreatedatabasetestDEFAULTCHARACTERSETutf8DEFAULTCOLLATEutf8_general_ci;--创建数据库sh
python读取hive数据库_利用pyhive将hive查询数据导入到mysql
weixin_39939668
python读取hive数据库
在大数据工作中经常碰到需要将hive查询数据导入到mysql的需求,常见的方法主要有两种,一是sqoop,另一种则是pyhive。本文主要讲的就是python的pyhive库的安装与使用。pyhive作用远程连接hive数据库,运行hivesql,而不需要登录到安装有hive的服务器上去可以更方便处理更多连续命令,可以封装一些经常需要复用的命令脚本化,不需要编译,随时改,随时执行看结果方便对hiv
大数据毕业设计hadoop+spark+hive微博舆情情感分析 知识图谱微博推荐系统
qq_79856539
javaweb 大数据 hadoop 课程设计
(一)Selenium自动化Python爬虫工具采集新浪微博评论、热搜、文章等约10万条存入.csv文件作为数据集;(二)使用pandas+numpy或MapReduce对数据进行数据清洗,生成最终的.csv文件并上传到hdfs;(三)使用hive数仓技术建表建库,导入.csv数据集;(四)离线分析采用hive_sql完成,实时分析利用Spark之Scala完成;(五)统计指标使用sqoop导入m
从零到一建设数据中台 - 关键技术汇总
我码玄黄
数据中台 数据挖掘 数据分析 大数据
一、数据中台关键技术汇总语言框架:Java、Maven、SpringBoot数据分布式采集:Flume、Sqoop、kettle数据分布式存储:HadoopHDFS离线批处理计算:MapReduce、Spark、Flink实时流式计算:Storm/SparkStreaming、Flink批处理消息队列:Kafka查询分析:Hbase、Hive、ClickHouse、Presto搜索引擎:Elast
Sqoop一些常用命令及参数
大数据小同学
常用命令列举这里给大家列出来了一部分Sqoop操作时的常用参数,以供参考,需要深入学习的可以参看对应类的源代码。命令类说明importImportTool将数据导入到集群exportExportTool将集群数据导出codegenCodeGenTool获取数据库中某张表数据生成Java并打包Jarcreate-hive-tableCreateHiveTableTool创建Hive表evalEval
hive学习笔记之九:基础UDF
程序员欣宸
欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;《hive学习笔记》系列导航基本数据类型复杂数据类型内部表和外部表分区表分桶HiveQL基础内置函数Sqoop基础UDF用户自定义聚合函数(UDAF)UDTF本篇概览本文是《hive学习笔记》的第九篇
Hadoop生态圈
陈超Terry的技术屋
生态圈1.HBase的数据存储在HDFS里2.MapReduce可以计算HBase里的数据,也可以计算HDFS里的数据3.Hive是数据分析数据引擎,也是MapReduce模型,支持SQL4.Pig也是一个数据分析引擎,不支持SQL,有自己的PigLatin数据5.Sqoop是数据采集工具,针对关系数据库6.Flume是针对文件等数据的采集7.Hadoop的HA通过Zookeeper来实现8.HU
hive学习笔记之三:内部表和外部表
程序员欣宸
欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;《hive学习笔记》系列导航基本数据类型复杂数据类型内部表和外部表分区表分桶HiveQL基础内置函数Sqoop基础UDF用户自定义聚合函数(UDAF)UDTF本篇概览本文是《hive学习笔记》系列的第
Sqoop 入门基础
香菜的开发日记
sqoop hadoop hive
简介Sqoop(SQLtoHadoop)是一个开源工具,用于在关系型数据库和Hadoop之间传输数据。它提供了一种快速高效的方式,将数据从关系型数据库导入到Hadoop集群进行分析,并支持将Hadoop集群中的数据导出到关系型数据库中。本篇教程将详细介绍Sqoop的全部用法,包括基本概念、使用方法和实例代码。我们将创建一个示例数据表,并使用Sqoop来导入和导出数据。一、准备工作在开始之前,请确保
shell脚本循环遍历日期,用于sqoop脚本
茂盛哥哥
#!/bin/bashfirst="$1"second="$2"while["$first"!="$second"]dodate=`date-d"$first"+"%Y-%m-%d"`sqoopexport\--connectjdbc:mysql://\--username\--password\--tabledwd_fact_front_orderinfo\--export-dir/user/h
Sqoop你用对了吗?
你值得拥有更好的12138
个人想法,有错请指出怎么让sqoop流程化1.首先创造配置表和任务表tb_configidjdbc_urluserpass_wordcolumnstablehive_tableis_incremental1jdbc:mysql....rootrootid,user,pwuseruser0taskidtask_nameconf_idstatusctimeretrys1sqoop_table_is_i
HIVE中小文件问题
这孩子谁懂哈
HIVE hive hadoop 数据仓库
一、小文件产生原因1.动态分区插入数据,会产生大量小文件2.数据源本来就含有大量小文件3.数据增量导入,如Sqoop数据导入,增量insert导入数据等4.分桶表(主要是切分文件,容易产生小文件问题)1.2.3都是数据导入的问题:hive中的小文件肯定是向hive表中导入数据时产生,所以先看下向hive中导入数据的几种方式1.直接向表中插入数据insertintotableAvalues(1,'z
大数据开发之Sqoop详细介绍
只是甲
备注:测试环境CDH6.3.1Sqoop1.4.7一.Sqoop概述ApacheSqoop(SQL-to-Hadoop)项目旨在协助RDBMS与Hadoop之间进行高效的大数据交流。用户可以在Sqoop的帮助下,轻松地把关系型数据库的数据导入到Hadoop与其相关的系统(如HBase和Hive)中;同时也可以把数据从Hadoop系统里抽取并导出到关系型数据库里。Sqoop是一个在结构化数据和Had
Datax ETL工具源码研究
Spring1985
由于公司数据共享交换产品中需要用到数据交换工具,所以对数据交换工具进行了大量的研究,目前比较流行的数据交换工具有Kittle、Sqoop、KafkaConnect、DataX;以下是个人的一点比对结果:如下四款工具除了Kittle其他的共同点都是面向插件方式开发,扩展性都比较好。Kittle优点:与大数据Hadoop结合比较好,功能比较齐全,强大,支持数据库,文件数据读写,界面拖拽方式操作;缺点:
2018-07-19 sqoop
江江江123
sqoop:数据从传统数据库到到hadoop的导入,导出安装:1.解压2.修改配置文件cdSQOOP_HOME/conf$mvsqoop-env-template.shsqoop-env.sh打开sqoop-env.sh并编辑下面几行:exportHADOOP_COMMON_HOME=/home/hadoop/apps/hadoop-2.6.1/exportHADOOP_MAPRED_HOME=/
离线数仓(一)【数仓概念、需求架构】
让线程再跑一会
离线数仓 大数据
前言今天开始学习数仓的内容,之前花费一年半的时间已经学完了Hadoop、Hive、Zookeeper、Spark、HBase、Flume、Sqoop、Kafka、Flink等基础组件。把学过的内容用到实践这是最重要的,相信会有很大的收获。1、数据仓库概念1.1、概念数据仓库(DataWarehouse),是为企业制定决策,提供数据支持的。可以帮助企业,改进业务流程、提高产品质量等。(数据仓库的目的
计算机毕业设计PyFlink+Hadoop+Hive民宿数据分析可视化大屏 民宿推荐系统 民宿爬虫 民宿大数据 知识图谱 机器学习 大数据毕业设计
计算机毕业设计大神
流程1.selenium自动化爬虫框架采集民宿数据约10万条存入.csv文件作为数据集;2.使用pandas+numpy或MapReduce对数据进行数据清洗,生成最终的.csv文件并上传到hdfs;3.使用hive数仓技术建表建库,导入.csv数据集;4.离线分析采用hive_sql完成,实时分析利用Flink之Scala、FlinkSQL完成;5.统计指标使用sqoop导入mysql数据库;6
SQL条件判断语句嵌套window子句的应用【易错点】--HiveSql面试题25
莫叫石榴姐
SQLBOY1000题 sql HiveSql面试题 sql
目录0需求分析1数据准备3数据分析4小结0需求分析需求:表如下user_idgood_namegoods_typerk1hadoop1011hive1221sqoop2631hbase1041spark1351flink2661kafka1471oozie108以上数据中,goods_type列,假设26代表是广告,现在有个需求,想获取每个用户每次搜索下非广告类型的商品位置自然排序,如果下效果:u
HiveSQL——条件判断语句嵌套windows子句的应用
爱吃辣条byte
# HIve SQL 大数据 数据仓库
注:参考文章:SQL条件判断语句嵌套window子句的应用【易错点】--HiveSql面试题25_sql剁成嵌套判断-CSDN博客文章浏览阅读920次,点赞4次,收藏4次。0需求分析需求:表如下user_idgood_namegoods_typerk1hadoop1011hive1221sqoop2631hbase1041spark1351flink2661kafka1471oozie108以上数
大数据课程综合实验案例---课设问题汇总
钟良堂
笔记 大数据 hbase hadoop ubuntu echarts
最近翻看两年前的大数据课设,感觉这个大数据课设实验当时答辩在大数据课设实验过程中,我遇到了很多问题,在这里做出汇总:1、MySQL启动报错首先,我的MySQL有时候启动不了,当我输入这个命令的时候,会报很多信息出来:mysql-uroot-p有时候,我尝试了很多这个命令,就是打不开,一直显示这个信息。但有时候却可以启动,感觉很奇怪,很多时候得看运气:2、Sqoop连接MySQL报错在测试sqoop
sqoop导入数据到hdfs
鲲鹏猿
hdfs sqoop hadoop
Sqoop是apache旗下的一款”Hadoop和关系数据库之间传输数据”的工具导入数据:将MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统导出数据:从Hadoop的文件系统中导出数据到关系数据库2.Sqoop的工作机制将导入和导出的命令翻译成mapreduce程序实现在翻译出的mapreduce中主要是对inputformat和outputformat
数据采集高并发的架构应用
3golden
.net
问题的出发点:
最近公司为了发展需要,要扩大对用户的信息采集,每个用户的采集量估计约2W。如果用户量增加的话,将会大量照成采集量成3W倍的增长,但是又要满足日常业务需要,特别是指令要及时得到响应的频率次数远大于预期。
&n
不停止 MySQL 服务增加从库的两种方式
brotherlamp
linux linux视频 linux资料 linux教程 linux自学
现在生产环境MySQL数据库是一主一从,由于业务量访问不断增大,故再增加一台从库。前提是不能影响线上业务使用,也就是说不能重启MySQL服务,为了避免出现其他情况,选择在网站访问量低峰期时间段操作。
一般在线增加从库有两种方式,一种是通过mysqldump备份主库,恢复到从库,mysqldump是逻辑备份,数据量大时,备份速度会很慢,锁表的时间也会很长。另一种是通过xtrabacku
Quartz——SimpleTrigger触发器
eksliang
SimpleTrigger TriggerUtils quartz
转载请出自出处:http://eksliang.iteye.com/blog/2208166 一.概述
SimpleTrigger触发器,当且仅需触发一次或者以固定时间间隔周期触发执行;
二.SimpleTrigger的构造函数
SimpleTrigger(String name, String group):通过该构造函数指定Trigger所属组和名称;
Simpl
Informatica应用(1)
18289753290
sql workflow lookup 组件 Informatica
1.如果要在workflow中调用shell脚本有一个command组件,在里面设置shell的路径;调度wf可以右键出现schedule,现在用的是HP的tidal调度wf的执行。
2.designer里面的router类似于SSIS中的broadcast(多播组件);Reset_Workflow_Var:参数重置 (比如说我这个参数初始是1在workflow跑得过程中变成了3我要在结束时还要
python 获取图片验证码中文字
酷的飞上天空
python
根据现成的开源项目 http://code.google.com/p/pytesser/改写
在window上用easy_install安装不上 看了下源码发现代码很少 于是就想自己改写一下
添加支持网络图片的直接解析
#coding:utf-8
#import sys
#reload(sys)
#sys.s
AJAX
永夜-极光
Ajax
1.AJAX功能:动态更新页面,减少流量消耗,减轻服务器负担
2.代码结构:
<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
.... AJAX script goes here ...
创业OR读研
随便小屋
创业
现在研一,有种想创业的想法,不知道该不该去实施。因为对于的我情况这两者是矛盾的,可能就是鱼与熊掌不能兼得。
研一的生活刚刚过去两个月,我们学校主要的是
需求做得好与坏直接关系着程序员生活质量
aijuans
IT 生活
这个故事还得从去年换工作的事情说起,由于自己不太喜欢第一家公司的环境我选择了换一份工作。去年九月份我入职现在的这家公司,专门从事金融业内软件的开发。十一月份我们整个项目组前往北京做现场开发,从此苦逼的日子开始了。
系统背景:五月份就有同事前往甲方了解需求一直到6月份,后续几个月也完
如何定义和区分高级软件开发工程师
aoyouzi
在软件开发领域,高级开发工程师通常是指那些编写代码超过 3 年的人。这些人可能会被放到领导的位置,但经常会产生非常糟糕的结果。Matt Briggs 是一名高级开发工程师兼 Scrum 管理员。他认为,单纯使用年限来划分开发人员存在问题,两个同样具有 10 年开发经验的开发人员可能大不相同。近日,他发表了一篇博文,根据开发者所能发挥的作用划分软件开发工程师的成长阶段。
初
Servlet的请求与响应
百合不是茶
servlet get提交 java处理post提交
Servlet是tomcat中的一个重要组成,也是负责客户端和服务端的中介
1,Http的请求方式(get ,post);
客户端的请求一般都会都是Servlet来接受的,在接收之前怎么来确定是那种方式提交的,以及如何反馈,Servlet中有相应的方法, http的get方式 servlet就是都doGet(
web.xml配置详解之listener
bijian1013
java web.xml listener
一.定义
<listener>
<listen-class>com.myapp.MyListener</listen-class>
</listener>
二.作用 该元素用来注册一个监听器类。可以收到事件什么时候发生以及用什么作为响
Web页面性能优化(yahoo技术)
Bill_chen
JavaScript Ajax Web css Yahoo
1.尽可能的减少HTTP请求数 content
2.使用CDN server
3.添加Expires头(或者 Cache-control) server
4.Gzip 组件 server
5.把CSS样式放在页面的上方。 css
6.将脚本放在底部(包括内联的) javascript
7.避免在CSS中使用Expressions css
8.将javascript和css独立成外部文
【MongoDB学习笔记八】MongoDB游标、分页查询、查询结果排序
bit1129
mongodb
游标
游标,简单的说就是一个查询结果的指针。游标作为数据库的一个对象,使用它是包括
声明
打开
循环抓去一定数目的文档直到结果集中的所有文档已经抓取完
关闭游标
游标的基本用法,类似于JDBC的ResultSet(hasNext判断是否抓去完,next移动游标到下一条文档),在获取一个文档集时,可以提供一个类似JDBC的FetchSize
ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
白糖_
ORA-12514
今天通过Oracle SQL*Plus连接远端服务器的时候提示“监听程序当前无法识别连接描述符中请求服务”,遂在网上找到了解决方案:
①打开Oracle服务器安装目录\NETWORK\ADMIN\listener.ora文件,你会看到如下信息:
# listener.ora Network Configuration File: D:\database\Oracle\net
Eclipse 问题 A resource exists with a different case
bozch
eclipse
在使用Eclipse进行开发的时候,出现了如下的问题:
Description Resource Path Location TypeThe project was not built due to "A resource exists with a different case: '/SeenTaoImp_zhV2/bin/seentao'.&
编程之美-小飞的电梯调度算法
bylijinnan
编程之美
public class AptElevator {
/**
* 编程之美 小飞 电梯调度算法
* 在繁忙的时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层。
* 所有乘客都从一楼上电梯,到达某层楼后,电梯听下来,所有乘客再从这里爬楼梯到自己的目的层。
* 在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层。
* 问:电梯停在哪
SQL注入相关概念
chenbowen00
sql Web 安全
SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
首先让我们了解什么时候可能发生SQ
[光与电]光子信号战防御原理
comsci
原理
无论是在战场上,还是在后方,敌人都有可能用光子信号对人体进行控制和攻击,那么采取什么样的防御方法,最简单,最有效呢?
我们这里有几个山寨的办法,可能有些作用,大家如果有兴趣可以去实验一下
根据光
oracle 11g新特性:Pending Statistics
daizj
oracle dbms_stats
oracle 11g新特性:Pending Statistics 转
从11g开始,表与索引的统计信息收集完毕后,可以选择收集的统信息立即发布,也可以选择使新收集的统计信息处于pending状态,待确定处于pending状态的统计信息是安全的,再使处于pending状态的统计信息发布,这样就会避免一些因为收集统计信息立即发布而导致SQL执行计划走错的灾难。
在 11g 之前的版本中,D
快速理解RequireJs
dengkane
jquery requirejs
RequireJs已经流行很久了,我们在项目中也打算使用它。它提供了以下功能:
声明不同js文件之间的依赖
可以按需、并行、延时载入js库
可以让我们的代码以模块化的方式组织
初看起来并不复杂。 在html中引入requirejs
在HTML中,添加这样的 <script> 标签:
<script src="/path/to
C语言学习四流程控制if条件选择、for循环和强制类型转换
dcj3sjt126com
c
# include <stdio.h>
int main(void)
{
int i, j;
scanf("%d %d", &i, &j);
if (i > j)
printf("i大于j\n");
else
printf("i小于j\n");
retu
dictionary的使用要注意
dcj3sjt126com
IO
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
user.user_id , @"id",
user.username , @"username",
Android 中的资源访问(Resource)
finally_m
xml android String drawable color
简单的说,Android中的资源是指非代码部分。例如,在我们的Android程序中要使用一些图片来设置界面,要使用一些音频文件来设置铃声,要使用一些动画来显示特效,要使用一些字符串来显示提示信息。那么,这些图片、音频、动画和字符串等叫做Android中的资源文件。
在Eclipse创建的工程中,我们可以看到res和assets两个文件夹,是用来保存资源文件的,在assets中保存的一般是原生
Spring使用Cache、整合Ehcache
234390216
spring cache ehcache @Cacheable
Spring使用Cache
从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的
当druid遇上oracle blob(clob)
jackyrong
oracle
http://blog.csdn.net/renfufei/article/details/44887371
众所周知,Oracle有很多坑, 所以才有了去IOE。
在使用Druid做数据库连接池后,其实偶尔也会碰到小坑,这就是使用开源项目所必须去填平的。【如果使用不开源的产品,那就不是坑,而是陷阱了,你都不知道怎么去填坑】
用Druid连接池,通过JDBC往Oracle数据库的
easyui datagrid pagination获得分页页码、总页数等信息
ldzyz007
var grid = $('#datagrid');
var options = grid.datagrid('getPager').data("pagination").options;
var curr = options.pageNumber;
var total = options.total;
var max =
浅析awk里的数组
nigelzeng
二维数组 array 数组 awk
awk绝对是文本处理中的神器,它本身也是一门编程语言,还有许多功能本人没有使用到。这篇文章就单单针对awk里的数组来进行讨论,如何利用数组来帮助完成文本分析。
有这么一组数据:
abcd,91#31#2012-12-31 11:24:00
case_a,136#19#2012-12-31 11:24:00
case_a,136#23#2012-12-31 1
搭建 CentOS 6 服务器(6) - TigerVNC
rensanning
centos
安装GNOME桌面环境
# yum groupinstall "X Window System" "Desktop"
安装TigerVNC
# yum -y install tigervnc-server tigervnc
启动VNC服务
# /etc/init.d/vncserver restart
# vncser
Spring 数据库连接整理
tomcat_oracle
spring bean jdbc
1、数据库连接jdbc.properties配置详解 jdbc.url=jdbc:hsqldb:hsql://localhost/xdb jdbc.username=sa jdbc.password= jdbc.driver=不同的数据库厂商驱动,此处不一一列举 接下来,详细配置代码如下:
Spring连接池  
Dom4J解析使用xpath java.lang.NoClassDefFoundError: org/jaxen/JaxenException异常
xp9802
用Dom4J解析xml,以前没注意,今天使用dom4j包解析xml时在xpath使用处报错
异常栈:java.lang.NoClassDefFoundError: org/jaxen/JaxenException异常
导入包 jaxen-1.1-beta-6.jar 解决;
&nb