python
  • python-3.x
  • hadoop
  • hive
  • cloudera
  • 2017-08-27 20 views 11 likes 
    11

    Podczas podłączania do Hive2 użyciu Pythona w poniżej kodu:Nie można połączyć się przy użyciu Python Hive2

    import pyhs2 
    
    with pyhs2.connect(host='localhost', 
          port=10000, 
          authMechanism="PLAIN", 
          user='root', 
          password='test', 
          database='default') as conn: 
    with conn.cursor() as cur: 
        #Show databases 
        print cur.getDatabases() 
    
        #Execute query 
        cur.execute("select * from table") 
    
        #Return column info from query 
        print cur.getSchema() 
    
        #Fetch table results 
        for i in cur.fetch(): 
         print i 
    

    otrzymuję poniżej błędu:

    File 
    "C:\Users\vinbhask\AppData\Roaming\Python\Python36\site-packages\pyhs2-0.6.0-py3.6.egg\pyhs2\connections.py", 
    line 7, in <module> 
        from cloudera.thrift_sasl import TSaslClientTransport ModuleNotFoundError: No module named 'cloudera' 
    

    próbowali here i here ale problem nie został zdecydowany.

    Oto pakietów zainstalowanych dotychczas:

    bitarray0.8.1,certifi2017.7.27.1,chardet3.0.4,cm-api16.0.0,cx-Oracle6.0.1,future0.16.0,idna2.6,impyla0.14.0,JayDeBeApi1.1.1,JPype10.6.2,ply3.10,pure-sasl0.4.0,PyHive0.4.0,pyhs20.6.0,pyodbc4.0.17,requests2.18.4,sasl0.2.1,six1.10.0,teradata15.10.0.21,thrift0.10.0,thrift-sasl0.2.1,thriftpy0.3.9,urllib31.22 
    

    Błąd podczas korzystania Impyla:

    Traceback (most recent call last): 
    File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\Scripts\HiveConnTester4.py", line 1, in <module> 
    from impala.dbapi import connect 
    File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\impala\dbapi.py", line 28, in <module> 
    import impala.hiveserver2 as hs2 
    File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\impala\hiveserver2.py", line 33, in <module> 
    from impala._thrift_api import (
    File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\impala\_thrift_api.py", line 74, in <module> 
    include_dirs=[thrift_dir]) 
    File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\thriftpy\parser\__init__.py", line 30, in load 
    include_dir=include_dir) 
    File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\thriftpy\parser\parser.py", line 496, in parse 
    url_scheme)) 
    thriftpy.parser.exc.ThriftParserError: ThriftPy does not support generating module with path in protocol 'c' 
    
    +0

    Jestem zdumiony, że tak wiele osób skarży się nagle o PyHive (który obecnie jest łamany * [Sie 2017] *) i PyHS2 (które wyraźnie nie może zrobić pracy). Zamiast tego spróbuj ImPyla. Jest utrzymywany przez Clouderę. I działa. –

    +0

    @SamsonScharfrichter: Próbowałem również w Impyla, zaktualizowałem dziennik błędów dla tego powyżej – Vinod

    +0

    Co myślisz o PySpark? –

    Odpowiedz

    1

    thrift_sasl.py próbuje cStringIO który nie jest już dostępny w Pythonie 3.0. Spróbuj z python 2?

    +0

    Mamy wymóg używania python3 + – Vinod

    +0

    pysh2 nie jest już konserwowany. Czy próbujesz używać PyHive? – Xire

    1

    Być może trzeba będzie zainstalować niewydaną wersję thrift_sasl. Spróbuj:

    pip install git+https://github.com/cloudera/thrift_sasl 
    
    +0

    @Vinod był pomocny? – Tagar

    +0

    Nie otrzymuję tego błędu "Nie można połączyć się z portem github.com 443: Przekroczono limit czasu" – Vinod

    +0

    Ostatni błąd informuje o tym, że znajdujesz się za zaporą sieciową - właśnie dlatego dostajesz limit czasu na dostęp do portu 443. Zmień "https:" do 'http:' i spróbuj ponownie - port 80 może być otwarty. – Tagar

    0

    Jeśli jesteś komfortowe PySpark uczenia się, a następnie po prostu trzeba skonfigurować właściwość hive.metastore.uris wskazać na adres Hive Metastore i jesteś gotowa do pracy.

    Najprostszym sposobem, aby to zrobić, jest wyeksportowanie hive-site.xml z klastra, a następnie przekazanie --files hive-site.xml podczas spark-submit.

    (nie próbowałem z systemem autonomicznego Pyspark, więc YMMV)

    Powiązane problemy