0

私は HDP の初心者で、複数の列を持つ hbase テーブルを作成し、以下のように csv ファイルからデータをロードしたいと考えています。

csvファイル

ご覧のとおり、「nom」「prenom」などの複数の列を含む列ファミリー「informations personles」の例があります。

私の質問は次のとおりです: - hdpサンドボックスでJava APIを使用してテーブルhbaseを作成する方法は? - csv ファイルからデータをロードする方法は?

ps: テーブルを作成しようとしましたが、サンドボックスで実行する方法がわかりませんか? 私のJavaクラスをどこに置くのですか?何かを設定する必要がありますか?

ここに私のコードがあります

    import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.conf.Configuration;

public class CreateTable {

   public static void main(String[] args) throws IOException {

      // Instantiating configuration class
      Configuration con = HBaseConfiguration.create();
        con.set("hbase.zookeeper.property.clientPort", "2181");
        con.set("hbase.zookeeper.quorum", "hortonworks.hbase.vm");
        con.set("zookeeper.znode.parent", "/hbase-unsecure");
        System.out.println("HBase is running!");

      // Instantiating HbaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(con);

      // Instantiating table descriptor class
      HTableDescriptor tableDescriptor = new
      TableDescriptor(TableName.valueOf("competence"));

      // Adding column families to table descriptor
      tableDescriptor.addFamily(new HColumnDescriptor("Infos_collaborateur"));
      tableDescriptor.addFamily(new HColumnDescriptor("Infos_Rh"));
      tableDescriptor.addFamily(new HColumnDescriptor("Savoir_faire"));
      tableDescriptor.addFamily(new HColumnDescriptor("Savoir_etre"));
      tableDescriptor.addFamily(new HColumnDescriptor("Langues"));
      tableDescriptor.addFamily(new HColumnDescriptor("Java:Developpement/Librairies/API/Frameworks/CMS"));
      tableDescriptor.addFamily(new HColumnDescriptor("PHP/Frameworks"));
      tableDescriptor.addFamily(new HColumnDescriptor("Techno_Web/Frameworks"));
      tableDescriptor.addFamily(new HColumnDescriptor("Autres"));
      tableDescriptor.addFamily(new HColumnDescriptor("ERP:Language/Outils"));
      tableDescriptor.addFamily(new HColumnDescriptor("Mobile:natif"));
      tableDescriptor.addFamily(new HColumnDescriptor("Mobile:Cross"));
      tableDescriptor.addFamily(new HColumnDescriptor("Infographie/creas"));
      tableDescriptor.addFamily(new HColumnDescriptor("Outils_de_developpement/Software"));
      tableDescriptor.addFamily(new HColumnDescriptor("Analytics"));
      tableDescriptor.addFamily(new HColumnDescriptor("Outils_Microsoft"));
      tableDescriptor.addFamily(new HColumnDescriptor("Developpements/Librairies"));
      tableDescriptor.addFamily(new HColumnDescriptor("BaseDeDonnees/FluxDeDonnees"));
      tableDescriptor.addFamily(new HColumnDescriptor("Windows:SystemeDexploitation/serveur"));
      tableDescriptor.addFamily(new HColumnDescriptor("AutresOS"));
      tableDescriptor.addFamily(new HColumnDescriptor("Plateforms"));
      tableDescriptor.addFamily(new HColumnDescriptor("Serveur_web_parametrage"));
      tableDescriptor.addFamily(new HColumnDescriptor("Serveur_Application_parametrage"));
      tableDescriptor.addFamily(new HColumnDescriptor("Integration/fonctionnel"));
      tableDescriptor.addFamily(new HColumnDescriptor("Outils_de_conception/de_gestion_projet"));
      tableDescriptor.addFamily(new HColumnDescriptor("AMOA"));
      tableDescriptor.addFamily(new HColumnDescriptor("Experience"));   
      tableDescriptor.addFamily(new HColumnDescriptor("Interventions"));            

      // Execute the table through admin
      admin.createTable(tableDescriptor);
      System.out.println(" Table created ");
   }
}

前もって感謝します

4

1 に答える 1

0

ローカル マシンから Java プログラムを実行してサンドボックス hbase と Zookeeper に接続しようとしている場合は、サンドボックス設定 > ネットワーク > 詳細設定 > ポート転送で 2181 ポートのポート転送を行う必要があります。zk、Protocol:TCP、Hist IP:127.0.0.1、Host Port:2181、Guest Port: 2181 のような任意の名前を付けます。次に、プログラムで次のように conf を設定し、プログラムを実行します。

con.set("hbase.zookeeper.property.clientPort", "2181");
con.set("hbase.zookeeper.quorum", "127.0.0.1");

あなたのJavaプログラムでは、参照用にスキャナーAPIを使用してcsvファイルを読み取ることができますhttp://www.journaldev.com/2335/read-csv-file-java-scanner参照用にデータを保存するためにJava hbase apiを使用してデータを保存しますhttps://autofei.wordpress.com/2012/04/02/java-example-code-using-hbase-data-model-operations/

他のオプションは、ファイルと Java プログラム jar をサンドボックスに送信してそこで実行することです。サンドボックスにコピーまたは ssh するには、ホスト ポート: 2222、ゲスト ポート: 22 を指定して、上記と同様にポート フォワーディングを行う必要があります。

これがお役に立てば幸いです...

于 2016-09-08T15:58:24.133 に答える