我使用createOrReplaceView在sparksql目录中注册一个临时视图,此方法只需要一个参数(字符串viewname),但是我需要添加自己的自定义信息,例如hashMap存储了我需要的一些信息,有没有一种好的方法这个?
您可以在spark源代码中看到一种方法:
CreateViewCommand(
name = tableIdentifier,
userSpecifiedColumns = Nil,
comment = None,
properties = Map.empty,
originalText = None,
child = logicalPlan,
allowExisting = false,
replace = replace,
viewType = viewType)
但是我们不能传递属性,即使我们不能传递表描述信息
我不确定用例,但是您可以使用spark sql来做到这一点(无直接api来添加表属性,因此您可以将其视为间接方式)-
/**
* Create or replace a view. This creates a [[CreateViewStatement]]
*
* For example:
* {{{
* CREATE [OR REPLACE] [[GLOBAL] TEMPORARY] VIEW [IF NOT EXISTS] multi_part_name
* [(column_name [COMMENT column_comment], ...) ]
* create_view_clauses
*
* AS SELECT ...;
*
* create_view_clauses (order insensitive):
* [COMMENT view_comment]
* [TBLPROPERTIES (property_name = property_value, ...)]
* }}}
*/
样本查询-
val viewQuery =
s"""
| CREATE OR REPLACE TEMPORARY VIEW new_test
| COMMENT 'this is view comment'
| TBLPROPERTIES ('creator'='som', 'createdTime'=${System.currentTimeMillis()})
| AS select * from test
""".stripMargin
sqlContext.sql(viewQuery)