2016-04-13 4 views

Antwort

0

Es sieht aus wie Sie einen Importkonflikt in Ihrer Anwendung haben wahrscheinlich wegen Wildcard-Import aus pyspark.sql.functions:

Welcome to 
     ____    __ 
    /__/__ ___ _____/ /__ 
    _\ \/ _ \/ _ `/ __/ '_/ 
    /__/.__/\_,_/_/ /_/\_\ version 1.6.1 
     /_/ 

Using Python version 2.7.10 (default, Oct 19 2015 18:04:42) 
SparkContext available as sc, HiveContext available as sqlContext. 

In [1]: max(1, 2) 
Out[1]: 2 

In [2]: from pyspark.sql.functions import max 

In [3]: max(1, 2) 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-3-bb133f5d83e9> in <module>() 
----> 1 max(1, 2) 

TypeError: _() takes exactly 1 argument (2 given) 

Sofern Sie in einem relativ begrenzten arbeiten, ist es am besten, entweder PERFIX:

from pyspark.sql import functions as sqlf 

max(1, 2) 
## 2 

sqlf.max("foo") 
## Column<max(foo)> 

oder Alias:

from pyspark.sql.functions import max as max_ 

max(1, 2) 
## 2 

max_("foo") 
## Column<max(foo)> 
+0

Wenn Sie nicht wie üblich von 'pyspark.sql.functions' importieren. Es sollte keine Konflikte geben. Aber wenn es nicht funktioniert, bitte ein [mcve] – zero323

+0

Vielen Dank für die Antwort! Was du erklärt hast, ergibt Sinn. Aber wie kann man max() unter meinem eigenen Funkenkontext aufrufen? von pyspark.sql.functions import max als max_ wenn __name__ == "__main__": drucken max (1,2) Es funktioniert nicht für mich. Aber ich muss pyspark.sql.functions für andere Zwecke importieren. – user3610141

+0

Ich löste das Problem mit 'import __builtin__' dann 'print __builtin __. Max (1,2)'. Vielen Dank! – user3610141

Verwandte Themen