我正在尝试使用Pyspark中有25亿条记录的配置单元表。我认为表中存在一些格式错误或以其他方式"错误"的数据。我使用的是spark版本1.6.2和python版本2.6.6:
from pyspark import SparkContext, SparkConf
from pyspark.sql import HiveContext
with SparkContext() as sc:
tbl = “mydb.mytable”
hc = HiveContext(sc)
df = hc.table(tbl)
阅读表格。如果我尝试运行
df.take(5)
我遇到ValueError异常,并且
df.count()
无限期挂起。然而,如果我用对表格进行采样
dfsamp = df.sample(False, 0.0000001, 42)
我得到了一个大约有220行的数据帧,看起来没有任何问题。从配置单元CLI访问完整的表似乎可以正常工作。我假设有一些记录Spark由于某种原因无法处理。我想知道在将Hive表加载为pyspark数据帧后,是否有某种方法可以过滤它,这样只剩下"好"行。或者,在将Hive表加载到pyspark之前,是否有某种方法可以预处理它,以确保它只包含"好"数据?感谢任何帮助/见解。
发现日期列中有一些日期超出了范围。
如果我用加载数据帧
df = hc.sql("""
SELECT *
FROM {0}
WHERE date_col_1 BETWEEN '1970-01-01' AND '2029-12-31'
AND date_col_2 BETWEEN '1970-01-01' AND '2029-12-31'
.
.
.
""".format(tbl)
那么就没有问题了。