小编Ale*_*ord的帖子

镶木地板支持的Hive表:在Impala中不可查询的数组列

尽管Impala比Hive快得多,但我们使用Hive是因为它支持复杂的(嵌套的)数据类型,例如数组和映射。

我注意到,从CDH5.5开始,Impala 现在支持复杂的数据类型。由于也可以在Impala中运行Hive UDF,因此我们可能可以在Impala中完成我们想要的所有事情,但是速度要快得多。这真是个好消息!

在浏览文档时,我发现Impala希望数据以Parquet格式存储。我的数据以原始格式碰巧是一个两列CSV,其中第一列是ID,第二列是用竖线分隔的字符串数组,例如:

123,ASDFG|SDFGH|DFGHJ|FGHJK
234,QWERT|WERTY|ERTYU
Run Code Online (Sandbox Code Playgroud)

配置单元表已创建:

CREATE TABLE `id_member_of`(
  `id` INT, 
  `member_of` ARRAY<STRING>)
ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY ',' 
  COLLECTION ITEMS TERMINATED BY '|' 
  LINES TERMINATED BY '\n' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';
Run Code Online (Sandbox Code Playgroud)

原始数据已加载到Hive表中:

LOAD DATA LOCAL INPATH 'raw_data.csv' INTO TABLE id_member_of;
Run Code Online (Sandbox Code Playgroud)

表的Parquet版本已创建:

CREATE TABLE `id_member_of_parquet` (
 `id` STRING, 
 `member_of` ARRAY<STRING>) 
STORED AS PARQUET;
Run Code Online (Sandbox Code Playgroud)

来自CSV支持表的数据被插入到Parquet表中:

INSERT INTO id_member_of_parquet SELECT id, member_of FROM id_member_of;
Run Code Online (Sandbox Code Playgroud)

现在可以在Hive中查询Parquet表:

hive> select * from id_member_of_parquet;
123 ["ASDFG","SDFGH","DFGHJ","FGHJK"]
234 ["QWERT","WERTY","ERTYU"]
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我在Impala中查询同一Parquet支持的表时,它不返回数组列: …

hive impala parquet

3
推荐指数
1
解决办法
2258
查看次数

配置Druid以在端口5181上连接到Zookeeper

我正在运行一个MapR集群,想要用德鲁伊做一些时间序列分析.MapR使用Zookeeper的非标准端口(端口5181而不是传统端口2181).

当我启动Druid协调器服务时,它会尝试连接传统的Zookeeper端口并失败:

2015-03-03T17:46:49,614 INFO [main-SendThread(localhost:2181)] org.apache.zookeeper.ClientCnxn - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181.
2015-03-03T17:46:49,617 WARN [main-SendThread(localhost:2181)] org.apache.zookeeper.ClientCnxn - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
    java.net.ConnectException: Connection refused
Run Code Online (Sandbox Code Playgroud)

德鲁伊的文件显示,该动物园管理员主机可以通过设置druid.zk.service.host在财产config/_common/common.runtime.properties.它没有指定编辑Zookeeper端口的属性.

德鲁伊的Zookeeper端口是否可配置?或者如果在MapR中使用德鲁伊,是否有必要运行其他Zookeeper服务?

mapr druid apache-zookeeper

2
推荐指数
1
解决办法
1713
查看次数

Spring Boot:使用logback而不是log4j

我想通过Spring Boot项目使用Logback,因为它的性能和灵活性.我将Logback依赖项添加到pom.xml:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.1.3</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

...并确保我项目中每个类中的日志记录都是这样创建的:

public class MyClass {

    static final Logger LOG = LoggerFactory.getLogger(MyClass.class);
Run Code Online (Sandbox Code Playgroud)

项目启动时,控制台中会显示以下警告:

log4j:WARN No appenders could be found for logger (org.springframework.boot.logging.ClasspathLoggingApplicationListener).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Run Code Online (Sandbox Code Playgroud)

看起来Spring仍在尝试使用log4j而不是logback.我尝试添加logging.config=classpath:logback.xml到Spring application.properties,但它没有解决问题.

你能看出我做错了什么吗?

更新

@AliDehghani和@chrylis都认为它log4j正被另一个包引用pom.来自mvn dependency:tree确认的输出hbase-common来源:

com.woolford:my-project:jar:1.0-SNAPSHOT
+- org.apache.hbase:hbase-common:jar:1.1.2:compile
|  [... etc ...]
|  +- commons-logging:commons-logging:jar:1.2:compile
| …
Run Code Online (Sandbox Code Playgroud)

java logging spring logback

2
推荐指数
1
解决办法
8374
查看次数

h2o ensemble 抛出错误:“基础模型不保留交叉验证预测”

我正在尝试根据许多 GLM、GBM 和深度学习模型在 H2O 中创建一个集成模型。

这是我到目前为止所做的。

导入相关库:

import h2o
from h2o.estimators.glm import H2OGeneralizedLinearEstimator
from h2o.estimators.gbm import H2OGradientBoostingEstimator
from h2o.estimators.deeplearning import H2ODeepLearningEstimator
from h2o.estimators.stackedensemble import H2OStackedEnsembleEstimator
from h2o.grid.grid_search import H2OGridSearch
Run Code Online (Sandbox Code Playgroud)

数据可以从这里下载。进口:

airlines = h2o.import_file(path = "/Users/alexwoolford/h2o/allyears2k.csv", destination_frame = "airlines.hex")
Run Code Online (Sandbox Code Playgroud)

分为训练/测试集:

airlines_80,airlines_20 = airlines.split_frame(ratios=[.8], destination_frames=["airlines_80.hex", "airlines_20.hex"])
Run Code Online (Sandbox Code Playgroud)

定义变量(将 y 预测为 x 中所有列的函数):

x= airlines.columns
y= "ArrDelay"
x.remove(y)
Run Code Online (Sandbox Code Playgroud)

设置公共属性:

folds=5
assignment_type="Modulo"
search_criteria={'strategy': 'RandomDiscrete', 'max_models': 5, 'seed': 1}
Run Code Online (Sandbox Code Playgroud)

使用H2O的网格搜索来创建各种模型:

# GLM
glm_params = {"alpha": [0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, …
Run Code Online (Sandbox Code Playgroud)

python ensemble-learning h2o

2
推荐指数
1
解决办法
1078
查看次数

如何使用 Spring Boot 和 Micrometer 创建自定义仪表?

我编写了一个 Spring Boot 应用程序,我想使用Micrometer向 Prometheus 公开自定义指标。这是一个代码片段,我在其中递增计数器(有效)并尝试设置几个仪表(无效):

@Scheduled(cron = "*/2 * * * * *") // run every 2 seconds
private void logTemperature() throws UnknownHostException {

    // get measurement
    SensorReader sensorReader = new SensorReader();
    SensorReading sensorReading = sensorReader.getSensorReading();

    Metrics.counter("measurements").increment();
    Metrics.gauge("fahrenheit", sensorReading.getFahrenheit());
    Metrics.gauge("humidity", sensorReading.getHumidity());

    // do stuff with measurement
    // ...

}
Run Code Online (Sandbox Code Playgroud)

完整的源代码在这里:https : //github.com/alexwoolford/htu21d_logger/tree/master/htu21d-logger-spring

对象中的fahrenheit字段sensorReading是 a float。输出中存在仪表,但值是NaN(即不是数字):

# HELP measurements_total  
# TYPE measurements_total counter
measurements_total 82.0
...
# HELP humidity  
# …
Run Code Online (Sandbox Code Playgroud)

spring-boot prometheus micrometer

2
推荐指数
1
解决办法
3155
查看次数

SpringBoot/spring-kafka 应用程序中的 Autowired KafkaTemplate 抛出空指针

我正在尝试使用Spring Boot 应用程序中的spring-kafka KafkaTemplate 将消息写入 Kafka 主题。

我创建了一个 KafkaConfig 类:

@Configuration
@EnableKafka
public class KafkaConfig {

    @Value("${kafka.broker.address}")
    private String brokerAddress;

    @Bean
    public ProducerFactory<Integer, String> producerFactory() {
        return new DefaultKafkaProducerFactory<>(producerConfigs());
    }

    @Bean
    public Map<String, Object> producerConfigs() {
        Map<String, Object> props = new HashMap<>();
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokerAddress);
        props.put(ProducerConfig.RETRIES_CONFIG, 0);
        props.put(ProducerConfig.BATCH_SIZE_CONFIG, 16384);
        props.put(ProducerConfig.LINGER_MS_CONFIG, 1);
        props.put(ProducerConfig.BUFFER_MEMORY_CONFIG, 33554432);
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, IntegerSerializer.class);
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);

        return props;
    }

    @Bean
    public KafkaTemplate<Integer, String> kafkaTemplate() {
        return new KafkaTemplate<Integer, String>(producerFactory());
    }

}
Run Code Online (Sandbox Code Playgroud)

...并在我给 Kafka 写信的班级中自动连接了 KafkaTemplate:

@Autowired
private KafkaTemplate<Integer, String> …
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot spring-kafka

1
推荐指数
1
解决办法
8784
查看次数