概述
2019独角兽企业重金招聘Python工程师标准>>>
1 Importing Data Directly into Hive 关系型数据库-----hive
sqoop import
--connect jdbc:mysql://192.168.130.221/sqoop
--username root
--password root
--table tbl_place
--hive-import
表要有主键啊!!!
sqoop和hive的导入默认的导入路径是不一样的!但是不能存在
成功~
2
**For example, if you
want to change the Hive type of column id to STRING and column price to DECIMAL,
you can specify the following Sqoop parameters:
sqoop import
...
--hive-import
--map-column-hive id=STRING,price=DECIMAL
自己来一个:
sqoop import
--connect jdbc:mysql://192.168.130.221/sqoop
--username root
--password root
--table tbl_place
--hive-import
--map-column-hive place_code=STRING
成功!
**导入HIVE的过程:
1 先将数据导入临时表。
2 导入成功后
3 creating a table
4 loading the data from a temporary location.
**临时位置可以用 --target-dir or --warehouse-dir 两个参数指定。但是不要使用/user/hive/warehouse,容易在第三阶段出现问题。
**默认情况,已存在的表中如果有数据,则追加。
如果想删除原来的数据,再迁移的话,使用参数:--hive-overwrite
自己来一个:
sqoop import
--connect jdbc:mysql://192.168.130.221/sqoop
--username root
--password root
--table tbl_place
--hive-overwrite
成功!
3 Using Partitioned Hive Tables---使用分区的hive表
**
sqoop import
--connect jdbc:mysql://192.168.130.221/sqoop
--username root
--password root
--table tbl_place
--hive-import
--hive-partition-key place_code
--hive-partition-value "2016-02-26"
脑下面的错误。我在想是不是从因为我的hive不是一个集群导致的?----有待解决!
**Sqoop要求分区列为字符串类型。
**hive的分区支持是实现虚拟列,不属于数据本身。
**--hive-partition-value这个参数得值不能是列名称。
4 Replacing Special Delimiters During Hive Import----特殊字符
**当数据中包含HIVE的分隔符时,想要清除这些分隔符。
sqoop import
--connect jdbc:mysql://192.168.130.221/sqoop
--username root
--password root
--table cities
--hive-import
--hive-drop-import-delims
**也可以替换这些分隔符:
sqoop import
--connect jdbc:mysql://192.168.130.221/sqoop
--username root
--password root
--table cities
--hive-import
--hive-delims-replacement "SPECIAL"
**hive 分隔符有: n, t, and 1
5 Using the Correct NULL String in Hive
sqoop import
--connect jdbc:mysql://192.168.130.221/sqoop
--username root
--password root
--table cities
--hive-import
--null-string '\N'
--null-non-string '\N'
**hive处理空字符默认用:/N
**sqoop处理空字符默认用:null
**不会抛异常。坑爹!!! 可以存在空值,但是无法查询操作。有个卵用~
6 ***Importing Data into HBase
sqoop import
--connect jdbc:mysql://192.168.130.221/sqoop
--username root
--password root
--table cities
--hbase-table cities
--column-family world
**To insert data into HBase there are three mandatory parameters:
1 表名
2 列族名称
3 行键
** --hbase-row-key parameter.
**HBase不会自动建表。需要指定 --create-hbasetable.
**运行导入命令以前,列族和表必须存在
7 Importing All Rows into HBase
**sqoop import
-Dsqoop.hbase.add.row.key=true
--connect jdbc:mysql://192.168.130.221/sqoop
--username root
--password root
--table cities
--hbase-table cities
--column-family world
**HBase中不允许存在空值。
**HBase序列化的时候会跳过空值
**sqoop.hbase.add.row.key指示Sqoop插入行的键列两次,一次
作为行标识符,然后再次在数据本身。即使所有其他列包含空的行键的列至少不会是空的,这将允许插入该行在HBase。
8 Improving Performance When Importing into HBase
**在导入前,HBase创建表时,多区域。more regions
hbase> create 'cities', 'world', {NUMREGIONS => 20, SPLITALGO => 'HexString Split'}
**默认情况下,每一个新的HBase表只有一个区域,可以仅通过一个服务区域服务器。这意味着,每一个新的表将只提供一个物理节点。
转载于:https://my.oschina.net/u/2355324/blog/624760
最后
以上就是慈祥小伙为你收集整理的sqoop实战(五)的全部内容,希望文章能够帮你解决sqoop实战(五)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复