使用 Spark SQL 从Hive Metastore
查询同一个表时,时间戳字段正在失去精确度。
我的表格描述如下:
col_name data_type comment
id bigint null
name string null
joined_time timestamp null
使用Hive QL,我得到joined_time
个值,精确到毫秒。
Hive QL结果:
select * from employees;
1 foo 2016-07-04 02:12:10.0
2 bar 2016-07-04 02:12:10.0
使用spark-sql
时,我会失去精确度,最多几分钟。例如:
val result = sqlContext.sql("select * from employees")
result.show()
1 foo 2016-07-04 02:12:...
2 bar 2016-07-04 02:12:...
答案 0 :(得分:3)
它并没有失去精确度。它刚刚截断了显示。
自 Spark 1.6 以来,您可以使用result.show(false)
http://spark.apache.org/docs/latest/api/scala/#org.apache.spark.sql.Dataset
val df = Seq((1,2),(2,4)).toDF("x","y")
df.show(false)
// +---+---+
// |x |y |
// +---+---+
// |1 |2 |
// |2 |4 |
// +---+---+
现在有了时间戳:
sqlContext.sql("select current_timestamp()").show
// +--------------------+
// | _c0|
// +--------------------+
// |2017-02-10 14:40:...|
// +--------------------+
sqlContext.sql("select current_timestamp()").show(false)
// +-----------------------+
// |_c0 |
// +-----------------------+
// |2017-02-10 14:40:14.038|
// +-----------------------+