关于用java写程序把本地文件上传到HDFS中的问题

关于用java写程序把本地文件上传到HDFS中的问题,第1张

将这FileSystem hdfs = FileSystem.get(config)

改成FileSystem hdfs = FileSystem.get(URI.create("hdfs://master:9000"),config)

上面那句取得的是本地文件系统对象,改成下面这个才是取得hdfs文件系统对象,当你要 *** 作本地文件对象的时候就要用上面那句取得本地文件对象,我在2.7.4刚开始也是跟你一样的错误,改为下面的就可以了

负责“hdfs”和“数据存储”的程序是HDFS。

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodityhardware)上的分布式文件系统。

它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。

运行在HDFS之上的程序有很大量的数据集。典型的HDFS文件大小是GB到TB的级别。所以,HDFS被调整成支持大文件。它应该提供很高的聚合数据带宽,一个集群中支持数百个节点,一个集群中还应该支持千万级别的文件。

大部分的HDFS程序对文件 *** 作需要的是一次写多次读取的 *** 作模式。一个文件一旦创建、写入、关闭之后就不需要修改了。

这个假定简单化了数据一致的问题和并使高吞吐量的数据访问变得可能。一个Map-Reduce程序或者网络爬虫程序都可以完美地适合这个模型。

如下面这个shell脚本:

#Oracle的连接字符串,其中包含了Oracle的地址,SID,和端口号

CONNECTURL=jdbc:oracle:thin:@20.135.60.21:1521:DWRAC2

#使用的用户名

ORACLENAME=kkaa

#使用的密码

ORACLEPASSWORD=kkaa123

#需要从Oracle中导入的表名

oralceTableName=tt

#需要从Oracle中导入的表中的字段名

columns=AREA_ID,TEAM_NAME

#将Oracle中的数据导入到HDFS后的存放路径

hdfsPath=apps/as/hive/$oralceTableName

#执行导入逻辑。将Oracle中的数据导入到HDFS中

sqoop import --append --connect $CONNECTURL --username $ORACLENAME --password $ORACLEPASSWORD --target-dir $hdfsPath --num-mappers 1 --table $oralceTableName --columns $columns --fields-terminated-by '\001'

执行这个脚本之后,导入程序就完成了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11606167.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存