Когда вы конвертируете .1 или 1/10 в base 2 (двоичный), вы получаете повторяющийся шаблон после десятичной точки, точно так же, как пытаетесь представить 1/3 в базе 10. Значение не является точным, и поэтому вы можете 't делать точную математику с ней, используя обычные методы с плавающей запятой.
Spark 2.0 +:
SPARK-10605 введена реализация нативного collect_list
и collect_set
. SparkSession
с поддержкой Hive или HiveContext
больше не требуются.
Spark 2.0-SNAPSHOT (до 2016-05-03) :
Вы должны включить поддержку Hive для данного SparkSession
:
В Scala:
val spark = SparkSession.builder
.master("local")
.appName("testing")
.enableHiveSupport() // <- enable Hive support.
.getOrCreate()
В Python:
spark = (SparkSession.builder
.enableHiveSupport()
.getOrCreate())
Spark & lt; 2.0:
Чтобы использовать UDF для Hive (см. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF ), вы используете Spark built с поддержкой Hive (это уже рассматривается, когда вы используете предварительно созданные двоичные файлы, что, как представляется, здесь) и инициализировать SparkContext
с помощью HiveContext
.
В Scala:
import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.sql.SQLContext
val sqlContext: SQLContext = new HiveContext(sc)
В Python:
from pyspark.sql import HiveContext
sqlContext = HiveContext(sc)