// Use :paste -raw to paste the following code in spark-shell
// BEGIN
package org.apache.spark
import org.apache.spark.sql.hive.HiveUtils
object opener {
def CONVERT_METASTORE_PARQUET = HiveUtils.CONVERT_METASTORE_PARQUET
}
// END
import org.apache.spark.opener
spark.sessionState.conf.getConf(opener.CONVERT_METASTORE_PARQUET)
HiveUtils
HiveUtils is an utility that is used to create a HiveClientImpl that HiveExternalCatalog uses to interact with a Hive metastore.
HiveUtils is a Scala object with private[spark] access modifier. Use the following utility to access the properties.
|
Tip
|
Enable Add the following line to
Refer to Logging. |
builtinHiveVersion Property
builtinHiveVersion: String = "1.2.1"
|
Note
|
|
Creating HiveClientImpl — newClientForMetadata Method
newClientForMetadata(
conf: SparkConf,
hadoopConf: Configuration): HiveClient (1)
newClientForMetadata(
conf: SparkConf,
hadoopConf: Configuration,
configurations: Map[String, String]): HiveClient
-
Uses time configurations formatted
Internally, newClientForMetadata creates a new SQLConf with spark.sql properties only (from the input SparkConf).
newClientForMetadata then creates an IsolatedClientLoader per the input parameters and the following configuration properties:
You should see one of the following INFO messages in the logs:
Initializing HiveMetastoreConnection version [hiveMetastoreVersion] using Spark classes.
Initializing HiveMetastoreConnection version [hiveMetastoreVersion] using maven.
Initializing HiveMetastoreConnection version [hiveMetastoreVersion] using [jars]
In the end, newClientForMetadata requests the IsolatedClientLoader for a HiveClient.
|
Note
|
newClientForMetadata is used when HiveExternalCatalog is requested for a HiveClient.
|
newClientForExecution Utility
newClientForExecution(
conf: SparkConf,
hadoopConf: Configuration): HiveClientImpl
newClientForExecution…FIXME
|
Note
|
newClientForExecution is used for HiveThriftServer2.
|
inferSchema Method
inferSchema(
table: CatalogTable): CatalogTable
inferSchema…FIXME
|
Note
|
inferSchema is used when ResolveHiveSerdeTable logical resolution rule is executed.
|
withHiveExternalCatalog Utility
withHiveExternalCatalog(
sc: SparkContext): SparkContext
withHiveExternalCatalog simply sets the spark.sql.catalogImplementation configuration property to hive for the input SparkContext.
|
Note
|
withHiveExternalCatalog is used when the deprecated HiveContext is created.
|