Как записать данные в таблицу улья, используя спарк удаленно? - PullRequest
0 голосов
/ 16 октября 2018

Я новичок в мире hadoop.Я установил спарк 2.3.1 в мою машину с Windows и установил клоудера внутри виртуальной машины на той же машине.Я делаю некоторые преобразования данных в виде данных с использованием оболочки оболочки.Теперь я хочу поместить эти данные в улей, который находится в клоудере с использованием искры.Я гуглил и сделал следующие шаги.

1) Скопировал все файлы в / etc / hive / conf и вставил в мои окна в файл spark / conf.

2) В Windows искра /conf откройте «hive-site.xml» и измените свойство, как показано ниже.

<configuration>
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://MyclouderaIP:9083</value>
  </property>
  <property>

3) Поместите запись хоста в оконную систему C: \ Windows \ System32 \ drivers \ etc \ hosts

пример: MyclouderaIP quickstart.cloudera

4) В cloudera vm откройте «/etc/hive/conf/hdfs-site.xml» и измените свойство, как показано ниже

<property>
    <name>dfs.client.use.datanode.hostname</name>
    <value>true</value>
  </property>

После завершения всехшаги, с которыми я сталкиваюсь ниже.

scala> val Main = sc.textFile("D:\\Windows\\CompanyData.txt")

scala> Main.collect

Ошибка:

java.lang.IllegalArgumentException: Pathname /D:/Windows/CompanyData.txt from hdfs://quickstart.cloudera:8020/D:/Windows/CompanyData.txt is not a valid DFS filename.
  at org.apache.hadoop.hdfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:197)
  at org.apache.hadoop.hdfs.DistributedFileSystem.access$000(DistributedFileSystem.java:106)
  at org.apache.hadoop.hdfs.DistributedFileSystem$22.doCall(DistributedFileSystem.java:1305)
  at org.apache.hadoop.hdfs.DistributedFileSystem$22.doCall(DistributedFileSystem.java:1301)
  at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
  at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1317)

Я удалил «core-site.xml» из spark / conf, и он может читать текстовый файл вокнаНо saprk не может связаться с cloudera при вставке записи.

scala> import org.apache.spark.sql.hive.HiveContext
scala> val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
scala> sqlContext.sql("insert into TestTable select 1")

Ошибка:

org.apache.hadoop.ipc.RemoteException(java.io.IOException): 
File /user/hive/warehouse/TestTable/.hive-staging_hive_2018-10-17_00-03-48_369_2112774544260501723-1/-ext-10000/_temporary/0/_temporary/attempt_20181017000351_0000_m_000000_0/part-00000-8fcba81b-8a51-48a6-9c47-ac5f1c9dafdb-c000 
could only be replicated to 0 nodes instead of minReplication (=1).  
There are 1 datanode(s) running and 1 node(s) are excluded in this operation.

пожалуйста, кто-нибудь может мне помочь.

...