91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HBase中怎么把數據寫到HDFS文件中

發布時間:2021-12-09 10:24:35 來源:億速云 閱讀:165 作者:iii 欄目:云計算

這篇文章主要講解了“HBase中怎么把數據寫到HDFS文件中”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“HBase中怎么把數據寫到HDFS文件中”吧!

從HBase中選定某張表,比如blog,然后限定表中的某些列,比如昵稱nickname,標簽tags,將這些列的數據內容寫入到HDFS文件中去。

/**
 * 選定HBase中的某張表,限定列,然后將其內容數據寫入到HDFS文件中。
 * */
public class HBaseAndMapReduce2 {

	public static void main(String[] args) throws Exception {
		System.exit(run());
	}

	public static int run() throws Exception {
		Configuration conf = new Configuration();
		conf = HBaseConfiguration.create(conf);
		conf.set("hbase.zookeeper.quorum", "192.168.226.129");

		Job job = Job.getInstance(conf, "findFriend");
		job.setJarByClass(HBaseAndMapReduce2.class);


		Scan scan = new Scan();
		//取對業務有用的數據 tags, nickname
		scan.addColumn(Bytes.toBytes("article"), Bytes.toBytes("tags"));
		scan.addColumn(Bytes.toBytes("author"), Bytes.toBytes("nickname"));

		//ImmutableBytesWritable來自hbase數據的類型
		/**
		 * public static void initTableMapperJob(String table, Scan scan,
		 * 		Class<? extends TableMapper> mapper,
		 * 		Class<?> outputKeyClass,
		 * 		Class<?> outputValueClass, Job job)
		 * */
		//確保 blog 表存在, 且表結構與本文一樣。 
		TableMapReduceUtil.initTableMapperJob("blog", scan, FindFriendMapper.class, 
				Text.class,  Text.class, job);
		DateFormat df = new SimpleDateFormat( "yyyyMMddHHmmssS" );
		
		FileOutputFormat.setOutputPath(job, new Path("hdfs://192.168.226.129:9000/hbasemapreduce1/" +df.format( new Date() )));

		job.setReducerClass(FindFriendReducer.class);
		
		return job.waitForCompletion(true) ? 0 : 1;
	}
    
    // 輸入輸出的鍵值
	public static class FindFriendMapper extends TableMapper<Text, Text>{
		//key是hbase中的行鍵
		//value是hbase中的所行鍵的所有數據
		@Override
		protected void map(
				ImmutableBytesWritable key,
				Result value,
				Mapper<ImmutableBytesWritable, Result,Text, Text>.Context context)
						throws IOException, InterruptedException {

			Text v = null;
			String[] kStrs = null;
			List<Cell> cs = value.listCells();
			for (Cell cell : cs) {
				System.out.println( "Cell--->: "+cell );
				if ("tags".equals(Bytes.toString(CellUtil.cloneQualifier(cell)))){
					kStrs = Bytes.toString(CellUtil.cloneValue(cell)).split(",");
				}else if ("nickname".equals(Bytes.toString(CellUtil.cloneQualifier(cell)))){
					v = new Text(CellUtil.cloneValue(cell));
				}
			}

			for (String kStr : kStrs) {
				context.write(new Text(kStr.toLowerCase()), v);
			}

		}
	}

	public static class FindFriendReducer extends Reducer<Text, Text, Text, Text>{
		@Override
		protected void reduce(Text key, Iterable<Text> values,
				Reducer<Text, Text, Text, Text>.Context context)
						throws IOException, InterruptedException {
			System.out.println(  "key--->"+key);
			StringBuilder sb = new StringBuilder();
			for (Text text : values) {
				System.out.println(  "value-->"+text);
				sb.append((sb.length() > 0 ? ",":"") + text.toString());
			}
			context.write(key, new Text(sb.toString()));
		}
	}
}

輸出結構:

hadoop	Berg-OSChina,BergBerg
hbase	OSChina,BergBerg
zookeeper	OSChina,BergBerg

感謝各位的閱讀,以上就是“HBase中怎么把數據寫到HDFS文件中”的內容了,經過本文的學習后,相信大家對HBase中怎么把數據寫到HDFS文件中這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁德市| 元氏县| 石泉县| 于都县| 元谋县| 砀山县| 墨江| 青田县| 奇台县| 老河口市| 新绛县| 商水县| 贺兰县| 公主岭市| 京山县| 临澧县| 察隅县| 渭南市| 香河县| 梅河口市| 余江县| 玉山县| 临颍县| 六安市| 饶河县| 阿合奇县| 鹤庆县| 邵阳市| 顺昌县| 紫云| 柳江县| 宁都县| 宾川县| 雷波县| 永丰县| 洪雅县| 郓城县| 贺州市| 阿合奇县| 乌拉特前旗| 东安县|