我的也是这样 我的导出代码是
/bigdata/sqoop/bin/sqoop export \
--connect "jdbc:mysql://1921680211:3306/bigdatauseUnicode=true&characterEncoding=utf-8" \
--username $mysql_db_name \
--password $mysql_db_pwd \
--table $table_name \
--input-fields-terminated-by '\001' \
--export-dir $hadoop_dir
用sqlserver2000自带的导入导出数据工具,将access表中的数据导入到oracle中去 下面是我在一个人的博客中找到的注意事项,你可以看一看 1导入的时候access中的表名必须是大写的,否则导进去之后,因为sqlplus运行到后台的时候会把所有字符自动变为大写,而oracle大小写敏感,所以生成的小写表无法访问,你用toad或DBARtsion也是白搭 2表中的字段名称比如user之类的改进改名,很有可能就会因为这个卡掉,得重新导 3注意数据库中的数据,有可能会出现因为数据导致导入一半后卡住,出现这种问题的时候多半是因为备注转化为的对象类型不对 4ACCESS中的备注问题,这个是个头疼的问题,真tm头疼,刚开始我用OLE DB方式连接数据库,备注默认转化的oracle数据类型为LONG,但是TNND每张oracle表中最多只有一个LONG类型的字段,(古怪的规定~!我找了半天没找到原因),琢磨了半天后决定舍弃(当初选OLE DB是受页面里面OLE DB连接比ODBC连接先进点的观点影响。。),改用ODBC,这里连接数据库的时候有几种方法,我选的是用定义好的文件来连接,在生成文件的时候一定要注意,用户名和密码必须是大写的,不然的时候你就等着哭吧,然后配连接好的,执行导入,我第一遍的时候就相当成功,但是后来因为插错数据和表格,又懒的删只好删掉用户重新导,一模一样的数据,就是用户名变了,nnd就报了n多错误,备注自动生成的方式是CLOB,我们ACCESS数据库表中还有个OLE对象类型的,自动转化为BLOB类型,在页面上不能直接用通俗的方法获取rs读CLOB,要是这样写,一准报错,这个问题一直没解决。。从网上找了些资料,有种说将对象分割拿出来,但太麻烦了,能生成一个完整的结果集就不错了。。还有迭代,我们哥俩商量了半天准备用VARCHAR2(2000)替代,结果页面报错。
hive中创建dept表
create table dept(
deptno int,
dname string,
loc string
)
row format delimited fields terminated by ‘\t‘ lines terminated by ‘\n‘
stored as textfile;
导入数据:
sqoop import --connect jdbc:oracle:thin:@1921681107:1521:ORCL \
--username SCOTT --password tiger \
--table DEPT \
--hive-overwrite --hive-import --hive-table dept \
--fields-terminated-by ‘\t‘ --lines-terminated-by ‘\n‘ \
-m 3;
HIVE导出到ORACLE
需要分两步:
第一步:先写入到hdfs
insert overwrite directory ‘/user/hadoop/DEPT_HIVE_EXPORT‘ select from dept;
第二步:由hdfs导出到oracle
导出到数据库时,要确保表已经在数据库中存在,否则报错。
create table DEPT_DEMO as select from DEPT where 1=2;
sqoop export --connect jdbc:oracle:thin:@1921681107:1521:ORCL \
--username SCOTT --password tiger \
--table DEPT_DEMO \
--export-dir /user/hadoop/DEPT_HIVE_EXPORT \
--fields-terminated-by ‘\001‘ \
-m 2;
注:从hive导出到hdfs的分隔符不是,而是\001;如果不指定分隔符,则报错:Caused by: javalangNumberFormatException
一、Mysql与HDFS互导数据
环境:
宿主机器 *** 作系统为Win7,Mysql安装在宿主机上,宿主机地址为1921686696
3台虚拟机 *** 作系统为Ubuntu-12041-32位
三台虚拟机已成功安装Hadoop,并实现免密钥互访,配hosts为:
1921686691 masternode
1921686692 slavenode1
1921686693 slavenode2
/etc/profile已配置好必备环境变量HADOOP_HOME,JAVA_HOME
实验在masternode上进行,已成功连接mysql
步骤一,下载安装包:
我安装的Hadoop版本是原生hadoop-0202030,SQOOP不支持此版本,可使用CDH3版本hadoop,也可以通过拷贝相应的包到sqoop-120-CDH3B4/lib下,依然可以使用。
下载相关文件:
>
场景
使用sqoop从MySQL导出数据至Hive时,如果数据中包含hive指定的列分隔符,如\001 或\t,那么在Hive中就会导致数据错位;如果数据中包含换行符\n,那么就会导致原先的一行数据,在Hive中变成了两行。
解决办法
在sqoop执行时,使用如下参数:
如:
一分钟了解互联网数据挖掘流程
1、爬虫抓取网络数据
真实的数据挖掘项目,一定是从获取数据开始的,除了通过一些渠道购买或者下载专业数据外,常常需要大家自己动手爬互联网数据,这个时候,爬虫就显得格外重要了。
Nutch爬虫的主要作用是从网络上抓取网页数据并建立索引。我们只需指定网站的顶级网址,如taobaocom,爬虫可以自动探测出页面内容里新的网址,从而进一步抓取链接网页数据。nutch支持把抓取的数据转化成文本,如(PDF、WORD、EXCEL、HTML、XML等形式)转换成纯文字字符。
Nutch与Hadoop集成,可以将下载的数据保存到hdfs,用于后续离线分析。使用步骤为:
向hdfs中存入待抓取的网站url
$ hadoop fs -put urldir urldir
注:
第一个urldir为本地文件夹,存放了url数据文件,每行一个url地址
第二个urldir为hdfs的存储路径。
启动nutch,在NUTCH_HONE目录下执行以下命令
$ bin/nutch crawlurldir –dir crawl -depth 3 –topN 10
命令成功执行后,会在hdfs中生成crawl目录。
2、MapReduce预处理数据
对于下载的原始文本文档,无法直接进行处理,需要对文本内容进行预处理,包括文档切分、文本分词、去停用词(包括标点、数字、单字和其它一些无意义的词)、文本特征提取、词频统计、文本向量化等 *** 作。
常用的文本预处理算法是TF-IDF,其主要思想是,如果某个词或短语在一篇文章中出现的频率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来做分类。
输入原始文本内容:
Againit seems that cocoa delivered……
执行TF-IDF预处理:
hadoop jar $JAR SparseVectorsFromSequenceFiles……
输出文本向量:
9219:0246 453:0098 10322:021 11947:0272 ……
每一列是词及其权重,使用冒号分隔,例如“9219:0246”表示编号为9219的词,对应原始单词为“Again”,其权重值为0246。
3、Mahout数据挖掘
预处理后的数据就可以用来做数据挖掘。Mahout是一个很强大的数据挖掘工具,是分布式机器学习算法的集合,包括:协同过滤、分类、聚类等。
以LDA算法为例,它可以将文档集中每篇文档的主题按照概率分布的形式给出。它是一种无监督学习算法,在训练时不需要手工标注主题,需要的仅仅是指定主题的数量K。此外LDA的另一个优点则是,对于每一个主题均可找出一些词语来描述它。
输入预处理后的数据:
9219:0246 453:0098 ……
执行LDA挖掘算法:
mahout cvb –k 20……
输出挖掘结果:
topic1 {computer,technology,system,internet,machine}
topic2 {play,film,movie,star,director,production,stage}
我们可以获知用户的偏好是哪些主题,这些主题是由一些关键词组成。
4、Sqoop导出到关系数据库
在某些场景下,需要把数据挖掘的结果导出到关系数据库,用于及时响应外部应用查询。
sqoop是一个用来把hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:MySQL ,Oracle 等)中的数据导入到hadoop的hdfs中,也可以将hdfs的数据导出到关系型数据库中:
sqoop export –connect jdbc:mysql://localhost:3306/zxtest –username root–password root –table result_test –export-dir /user/mr/lda/out
export *** 作实现把hdfs目录/user/mr/lda/out下数据导出到mysql的result_test表。
1、在MYSQL中创建一个参数表A,用来记录要传输的表的表名B和字段。 2、HDFS上的数据的格式和MYSQL中参数表A中B表的字段的数量一样。 3、从MYSQL的参数表A中,读取要传输的表B。把这些字段拼凑成一个insert语句,例如 ,拼凑为insert into b
版本不匹配,环境上版本固定,所以选用手动新建hbase表,再导入数据
bin/sqoop import --connect jdbc:oracle:thin:@19216816223:1521/orcl --username sitts --password password --table SITTSESB_SERVICE_PARAM --target-dir /sqoop/oracle/esb_service_param --split-by PARAM_ID --incremental append --check-column PARAM_ID --last-value 33
hdfs dfs -cat /sqoop/oracle/esb_service_param/part-m-00004
Sqoop 146 UserGuide
不用一致的,可以使用--columns指定哪些字段
--columns id,name,hobby,birthday如果不使用--columns这个参数,那么个数就得一致了,不然会报错的
以上就是关于sqoop 从 hive 导出到 mysql 一直卡在map 100% reduce 0% 不动全部的内容,包括:sqoop 从 hive 导出到 mysql 一直卡在map 100% reduce 0% 不动、sqoop问题,求帮助、sqoop支持从mysql导出到oracle吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)