Pyspark에서 원격 하이브 서버에 저장된 테이블을 읽고 쓸 필요가 있습니다. 이 원격 하이브에 대해 내가 아는 전부는 그것이 Docker 밑에서 실행된다는 것입니다. 나는 테이블 메타 스토어 URL이Pyspark : 원격 하이브웨어 하우스 위치
: 하둡 색조에서 난 일부 데이터를 선택하려고 iris
테이블에 대한 두 개의 URL을 발견
http://xxx.yyy.net:8888/metastore/table/mytest/iris
및 테이블 위치 URL :
hdfs://quickstart.cloudera:8020/user/hive/warehouse/mytest.db/iris
마지막 URL에 quickstart.cloudera:8020
이 포함 된 이유를 모르겠습니다. 하이브가 도커 밑에서 뛰기 때문일 수 있습니까?
하이브 테이블에 대한 액세스를 토론 Pyspark 튜토리얼 글 : 하이브로 작업 할 때, 하나는 하이브 SERDES에 대한 지속적인 하이브 메타 스토어에 연결, 지원을 포함하여, 하이브 지원 SparkSession를 초기화해야한다
https://spark.apache.org/docs/latest/sql-programming-guide.html#hive-tables
, 및 하이브 사용자 정의 함수. 기존 Hive 배포가없는 사용자는 Hive 지원을 계속 사용할 수 있습니다. hive-site.xml에 의해 구성되지 않으면 컨텍스트는 자동으로 현재 디렉토리에 metastore_db를 만들고 spark.sql.warehouse.dir에 의해 구성된 디렉토리를 만듭니다.이 디렉토리는 현재 디렉토리에있는 spark-warehouse 디렉토리로 기본 설정됩니다. 시작되었습니다. hive-site.xml의 hive.metastore.warehouse.dir 속성은 Spark 2.0.0부터 사용되지 않습니다. 대신 spark.sql.warehouse.dir을 사용하여웨어 하우스에있는 데이터베이스의 기본 위치를 지정하십시오. Spark 응용 프로그램을 시작한 사용자에게 쓰기 권한을 부여해야 할 수 있습니다. 나는 어느
hive.metastore.warehouse.dir
도spark.sql.warehouse.dir
속성이 없습니다 그럭저럭 내 경우hive-site.xml
에서
.
from os.path import expanduser, join, abspath
from pyspark.sql import SparkSession
from pyspark.sql import Row
// warehouseLocation points to the default location for managed databases and tables
val warehouseLocation = new File("spark-warehouse").getAbsolutePath
spark = SparkSession \
.builder \
.appName("Python Spark SQL Hive integration example") \
.config("spark.sql.warehouse.dir", warehouse_location) \
.enableHiveSupport() \
.getOrCreate()
그리고 내 경우에는
이warehouseLocation
뿐만 정확한 값으로, 위의 코드와 유사한 실행 한 후, 나는 다음 수 있다고 생각 :
스파크 튜토리얼은 원격 하이브 테이블에 액세스하려면 다음 코드를 사용하도록 제안 해야 할 일 :
spark.sql("use mytest")
spark.sql("SELECT * FROM iris").show()
어디에서 원격 하이브웨어 하우스 위치를 찾을 수 있습니까? Pyspark를 원격 Hive 테이블과 함께 작동시키는 방법은 무엇입니까?
...
...
...
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://127.0.0.1/metastore?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
...
...
...
<property>
<name>hive.metastore.uris</name>
<value>thrift://127.0.0.1:9083</value>
<description>IP address (or fully-qualified domain name) and port of the metastore host</description>
</property>
은 그래서 127.0.0.1과 같은
이 Clouder 고정 표시기 응용 프로그램을 실행 도커의 localhost입니다 :업데이트
hive-site.xml
에는 다음과 같은 속성이 있습니다. 하이브 창고에 도착하는 데 도움이되지 않습니다.
Cloudera Hive가 Docker 앱으로 실행될 때 하이브 창고에 액세스하는 방법.여기
Pyspark doc (내 질문에 인용문 참조)에서는 '웨어 하우스'위치 지정의 필요성에 대해 설명합니다. 그것은 하이브'metastore '와 같은 것입니까? 내 질문에 대한 업데이트를 참조하십시오. – dokondr