黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Java API連接hbase示例

Java API連接hbase示例

更新時(shí)間:2022-09-30 09:55:50 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1519次

首先pom.xml里添加hbase-client依賴:

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-client</artifactId>
    <version>1.4.13</version>
</dependency>

然后將hbase-site.xml,core-site.xml復(fù)制到本地(如果實(shí)在本地運(yùn)行的話)

package com.dkl.blog.hbase;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;
/**
 *Java API 連接 HBASE
 */
public class JavaHbaseExample {
    private static final String TABLE_NAME = "MY_TABLE_NAME_TOO";
    private static final String CF_DEFAULT = "DEFAULT_COLUMN_FAMILY";
    public static void createOrOverwrite(Admin admin, HTableDescriptor table) throws IOException {
        if (admin.tableExists(table.getTableName())) {//如果表已存在
            if (admin.isTableEnabled(table.getTableName())) {//如果表狀態(tài)為Enabled
                admin.disableTable(table.getTableName());
            }
            admin.deleteTable(table.getTableName());
        }
        admin.createTable(table);
    }
    public static void createSchemaTables(Configuration config) throws IOException {
        try (Connection connection = ConnectionFactory.createConnection(config);
             Admin admin = connection.getAdmin()) {
            HTableDescriptor table = new HTableDescriptor(TableName.valueOf(TABLE_NAME));
            table.addFamily(new HColumnDescriptor(CF_DEFAULT).setCompressionType(Algorithm.NONE));
            System.out.print("Creating table. ");
            createOrOverwrite(admin, table);
            System.out.println(" Done.");
        }
    }
    public static void modifySchema(Configuration config) throws IOException {
        try (Connection connection = ConnectionFactory.createConnection(config);
             Admin admin = connection.getAdmin()) {
            TableName tableName = TableName.valueOf(TABLE_NAME);
            if (!admin.tableExists(tableName)) {
                System.out.println("Table does not exist.");
                System.exit(-1);
            }
            HTableDescriptor table = admin.getTableDescriptor(tableName);
            // Update existing table
            HColumnDescriptor newColumn = new HColumnDescriptor("NEWCF");
            newColumn.setCompactionCompressionType(Algorithm.GZ);
            newColumn.setMaxVersions(HConstants.ALL_VERSIONS);
            //admin.addColumn(tableName, newColumn); //官方文檔代碼,這里我理解的是應(yīng)該要添加列簇,但是該方法不生效,
            // 導(dǎo)致拋出異常org.apache.hadoop.hbase.InvalidFamilyOperationException:
            // Family 'DEFAULT_COLUMN_FAMILY' is the only column family in the table, so it cannot be deleted,
            // 用我下面這行代碼
            table.addFamily(newColumn);
            // Update existing column family
            HColumnDescriptor existingColumn = new HColumnDescriptor(CF_DEFAULT);
            existingColumn.setCompactionCompressionType(Algorithm.GZ);
            existingColumn.setMaxVersions(HConstants.ALL_VERSIONS);
            table.modifyFamily(existingColumn);
            admin.modifyTable(tableName, table);
            // Disable an existing table
            admin.disableTable(tableName);
            // Delete an existing column family
            admin.deleteColumn(tableName, CF_DEFAULT.getBytes("UTF-8"));
            // Delete a table (Need to be disabled first)
            admin.deleteTable(tableName);
        }
    }
    public static void main(String... args) throws IOException {
        Configuration config = HBaseConfiguration.create();
        config.set("hbase.zookeeper.quorum", "192.168.44.128");  //hbase 服務(wù)地址,如果在hbase-site.xml里有配置,可以不用這行代碼
//        config.set("hbase.zookeeper.property.clientPort","2181"); //默認(rèn)2181端口
//        System.out.println(System.getenv("HBASE_CONF_DIR"));
        //Add any necessary configuration files (hbase-site.xml, core-site.xml)
//        config.addResource(new Path(System.getenv("HBASE_CONF_DIR"), "hbase-site.xml")); //官方文檔代碼,需要配置環(huán)境變量
        config.addResource(new Path("D:\\data\\conf\\hbase", "hbase-site.xml"));
//        config.addResource(new Path(System.getenv("HADOOP_CONF_DIR"), "core-site.xml"));//官方文檔代碼,需要配置環(huán)境變量
        config.addResource(new Path("D:\\data\\conf\\hadoop", "core-site.xml"));
        createSchemaTables(config);
        modifySchema(config);
    }
}

異常及解決

java.net.ConnectException: Connection refused: no further information

java.net.ConnectException: Connection refused: no further information

解決方法:

1.添加里添加

config.set("hbase.zookeeper.quorum", "192.168.44.128");    //官網(wǎng)代碼里沒(méi)有這行

2.程序里用到的hbase-site.xml里添加 (如果hbase-site.xml沒(méi)有下面的配置,單機(jī)配置時(shí)沒(méi)有添加)

<property>
    <name>hbase.zookeeper.quorum</name>
    <value>192.168.44.128</value>
</property>

Call to localhost/127.0.0.1:16201 failed on connection exception

java.net.SocketTimeoutException: callTimeout=60000, callDuration=62839: Call to localhost/127.0.0.1:16201  failed on connection exception

沒(méi)有設(shè)置host 和 hostname 驗(yàn)證:

netstat -nautlp|grep 16201
tcp6       0      0 127.0.0.1:16201         :::*                    LISTEN      69041/java          
tcp6       0      0 127.0.0.1:34889         127.0.0.1:16201         ESTABLISHED 68947/java          
tcp6       0      0 127.0.0.1:16201         127.0.0.1:34889         ESTABLISHED 69041/java          
tcp6       0      0 127.0.0.1:34885         127.0.0.1:16201         ESTABLISHED 68947/java          
tcp6       0      0 127.0.0.1:16201         127.0.0.1:34885         ESTABLISHED 69041/java

修改:

vim /etc/hosts
192.168.44.128 master
vim /etc/hostname
master

然后重啟hbase和程序,驗(yàn)證

netstat -nautlp|grep 16201
tcp6       0      0 192.168.44.128:16201    :::*                    LISTEN      66641/java          
tcp6       0      0 192.168.44.128:16201    192.168.44.128:40589    ESTABLISHED 66641/java          
tcp6       0      0 192.168.44.128:40589    192.168.44.128:16201    ESTABLISHED 66546/java

java.net.SocketTimeoutException: callTimeout=60000, callDuration=79924: can not resolve master,16201,1597395570081

這個(gè)是本地運(yùn)行程序且沒(méi)有配置本地host時(shí)產(chǎn)生的,解決方法為編輯C:\Windows\System32\drivers\etc\hosts,添加

192.168.44.128 master

 

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日批视频在线播放 | 国产成人a毛片在线 | 久久综合给会久久狠狠狠 | 亚洲免费看片 | 日本va视频 | 欧美在线观看一区二区 | 国产精品视频全国免费观看 | 日本三级特黄 | 国产伦精品一区三区视频 | 91精品国产综合久久青草 | 日韩三级久久 | 午夜影院一区二区 | 26uuu欧美日韩国产 | 久久受www免费人成看片 | 久久久999国产精品 久久久99精品 | 国产大片黄 | 日韩精品在线视频观看 | 免费精品国产日韩热久久 | 亚洲综合偷自成人网第页色 | 蜜桃日本一道无卡不码高清 | www.色网站 | 亚洲激情成人 | 456极品嫩模在线视频 | 国产成人久久一区二区三区 | 成人99国产精品 | 一级毛片免费观看视频 | 日日射天天操 | 亚洲欧美日韩久久精品第一区 | 日本成人一级片 | 欧美日韩成人午夜免费 | 在线看片亚洲 | 黄色影院免费看 | 好吊日在线观看 | 男人把女人靠到爽痛视频 | 色偷偷7777www | 欧美日韩免费 | 精品国产一区二区三区成人 | 欧美黄区 | 欧美特黄a级高清免费大片 欧美太黄太色视频在线观看 | 日韩高清在线二区 | 国产精品欧美亚洲韩国日本 |