精华内容
下载资源
问答
  • Tuple接口有很多方法可以读取从上游组件发送过来的数据,这些方法可以分为2类。 根据下标获取数据 根据字段名获取数据 读取数据方法 public class TupleImpl extends IndifferentAccessMap implements Seqable...

     

     

    Tuple接口有很多方法可以读取从上游组件发送过来的数据,这些方法可以分为2类。

    • 根据下标获取数据
    • 根据字段名获取数据

    读取数据方法

    public class TupleImpl extends IndifferentAccessMap implements Seqable, Indexed, IMeta, Tuple {
        private List<Object> values;
        private int taskId;
        private String streamId;
        private GeneralTopologyContext context;
        private MessageId id;
        private IPersistentMap _meta = null;
        
        public TupleImpl(GeneralTopologyContext context, List<Object> values, int taskId, String streamId, MessageId id) {
            this.values = values;
            this.taskId = taskId;
            this.streamId = streamId;
            this.id = id;
            this.context = context;
            
            String componentId = context.getComponentId(taskId);
            Fields schema = context.getComponentOutputFields(componentId, streamId);
            if(values.size()!=schema.size()) {
                throw new IllegalArgumentException(
                        "Tuple created with wrong number of fields. " +
                        "Expected " + schema.size() + " fields but got " +
                        values.size() + " fields");
            }
        }
    
        public TupleImpl(GeneralTopologyContext context, List<Object> values, int taskId, String streamId) {
            this(context, values, taskId, streamId, MessageId.makeUnanchored());
        }    
        
        Long _processSampleStartTime = null;
        Long _executeSampleStartTime = null;
    	
    	//从任务的上下文【任务创建时定义好的】里获取Tuple定义的Fields
        public Fields getFields() {
            return context.getComponentOutputFields(getSourceComponent(), getSourceStreamId());
        }
    	
    	//获取到field的下标,直接在values【List】中获取对应的数据
    	public Object getValueByField(String field) {
            return values.get(fieldIndex(field));
        }
    	
    	public String getStringByField(String field) {
            return (String) values.get(fieldIndex(field));
        }
    	
    	//根据下标直接在Values[List]中获取数据
    	public Object getValue(int i) {
            return values.get(i);
        }
         
        //.......	 
    	
    }

     

    任务上下文

    public class GeneralTopologyContext implements JSONAware {
        private StormTopology _topology;
        private Map<Integer, String> _taskToComponent;
        private Map<String, List<Integer>> _componentToTasks;
        private Map<String, Map<String, Fields>> _componentToStreamToFields;
        private String _stormId;
        protected Map _stormConf;
        
        // pass in componentToSortedTasks for the case of running tons of tasks in single executor
        public GeneralTopologyContext(StormTopology topology, Map stormConf,
                Map<Integer, String> taskToComponent, Map<String, List<Integer>> componentToSortedTasks,
                Map<String, Map<String, Fields>> componentToStreamToFields, String stormId) {
            _topology = topology;
            _stormConf = stormConf;
            _taskToComponent = taskToComponent;
            _stormId = stormId;
            _componentToTasks = componentToSortedTasks;
            _componentToStreamToFields = componentToStreamToFields;
        }
    	    /**
         * Gets the declared output fields for the specified component/stream.
         */
        public Fields getComponentOutputFields(String componentId, String streamId) {
            Fields ret = _componentToStreamToFields.get(componentId).get(streamId);
            if(ret==null) {
                throw new IllegalArgumentException("No output fields defined for component:stream " + componentId + ":" + streamId);
            }
            return ret;
        }
    	
         //......	
    	
    }

     

    展开全文
  • import org.apache.spark.sql.{DataFrame, Dataset, SparkSession} /** * Tuple格式的DataSet加载DataFrame */ object ReadTupleDataSetToDF { def main(args: Array[String]): Unit = { val session: SparkSession...

    测试数据:

    146.202.84.90	江西	2020-10-28	1603879301437	6285032924209569490	www.jd.com	Login
    146.202.84.90	江西	2020-10-28	1603879301438	6285032924209569490	www.gome.com.cn	Login
    146.202.84.90	江西	2020-10-28	1603879301438	6285032924209569490	www.taobao.com	Comment
    118.62.67.216	北京	2020-10-28	1603879301438	2988409670998681798	www.dangdang.com	Click
    118.62.67.216	北京	2020-10-28	1603879301438	2988409670998681798	www.suning.com	Click
    118.62.67.216	北京	2020-10-28	1603879301439	2988409670998681798	www.gome.com.cn	Comment
    100.214.27.58	河北	2020-10-28	1603879301441	6531278323337129900	www.taobao.com	View
    100.214.27.58	河北	2020-10-28	1603879301444	6531278323337129900	www.taobao.com	Click
    100.214.27.58	河北	2020-10-28	1603879301444	6531278323337129900	www.mi.com	Regist
    42.222.37.182	香港	2020-10-28	1603879301444	4579529561379204385	www.dangdang.com	View
    42.222.37.182	香港	2020-10-28	1603879301444	4579529561379204385	www.baidu.com	Regist
    42.222.37.182	香港	2020-10-28	1603879301445	4579529561379204385	www.suning.com	Comment
    

    示例代码;

    import org.apache.spark.sql.{DataFrame, Dataset, SparkSession}
    
    
    /**
     * Tuple格式的DataSet加载DataFrame
     */
    object ReadTupleDataSetToDF {
      def main(args: Array[String]): Unit = {
        val session: SparkSession = SparkSession.builder()
          .master("local")
          .appName("ReadTupleDataSetToDF")
          .getOrCreate()
        session.sparkContext.setLogLevel("Error")
        val ds: Dataset[String] = session.read.textFile("T:/code/spark_scala/data/pvuvdata")
        import session.implicits._
        val tupleDs: Dataset[(String, String, String, String, String, String, String)] = ds.map(line => {
          //126.54.121.136	浙江	2020-07-13	1594648118250	4218643484448902621	www.jd.com	Comment
          val arr: Array[String] = line.split("\t")
          (arr(0), arr(1), arr(2), arr(3), arr(4), arr(5), arr(6))
        })
        val frame: DataFrame = tupleDs.toDF("ip", "local", "date", "ts", "uid", "site", "operator")
        frame.createTempView("t")
        // pv
        session.sql(
          """
            | select site ,count(*) as pv from t group by site order by pv
            |""".stripMargin).show()
        // uv
        session.sql(
          """
            |select site,count(*) uv from (select distinct ip,site from t) t1 group by site order by uv
            |""".stripMargin).show()
      }
    }
    

    结果显示:

    +----------------+-----+
    |            site|   pv|
    +----------------+-----+
    |   www.baidu.com|18293|
    |  www.suning.com|18320|
    |  www.taobao.com|18375|
    |www.dangdang.com|18576|
    | www.gome.com.cn|18587|
    |      www.jd.com|18600|
    |      www.mi.com|18667|
    +----------------+-----+
    
    +----------------+-----+
    |            site|   uv|
    +----------------+-----+
    |  www.suning.com|15442|
    |   www.baidu.com|15489|
    |  www.taobao.com|15582|
    |www.dangdang.com|15609|
    |      www.mi.com|15619|
    | www.gome.com.cn|15672|
    |      www.jd.com|15683|
    +----------------+-----+
    
    
    展开全文
  • 1.json写入txt及读取 import json json1 = open('C:/s/test.txt', encoding='utf8').read() # 读取json格式数据 # 这步很重要,一定要用loads载入json数据,这样的j1才为dict类型 j1 = json.loads(json1) 2.字典...

    摘要:作为一个程序员怎么能不会写入文件,读取文件呢,常用的各种json,dict,list数据写入text及json格式,冲!

     

    1.json写入txt及读取

    import json
    
    json1 = open('C:/s/test.txt', encoding='utf8').read() # 读取json格式数据
    # 这步很重要,一定要用loads载入json数据,这样的j1才为dict类型
    j1 = json.loads(json1)

    2.字典写入txt

    dic = {'姓名':'张三', '性别':'男'}
    
    with open('./test.txt', 'w', encoding='utf-8') as f:
        # 中文文本得添加ensure_ascii参数(乱码问题)
        # 将dic dumps json 格式进行写入
        f.write(json.dumps(dic, ensure_ascii=False, indent=4))

    3.list,tuple写入txt

    # list 合并成 tuple
    
    test_tuple = list(zip(l1, l2))
    
    # tuple 写入 txt  'a'为不覆盖写入即接着写入
    with open('../test.txt', 'a', encoding='utf8') as f:
        for onetuple in test_tuple:
            f.write(' '.join(t for t in test_tuple) + '\n') # 换行写入(一行写入一个tuple)

    dict数据写入json格式

    wait~

    1. json.load() # 从文件中加载
    2. json.loads() # 数据中加载
    3. json.dump() # 转存到文件
    4. json.dumps() # 转存到数据对象

    举例:

    dic = {'a':'一代目', 'b': 'Jackson'}
    
    # 对象之间的转换
    # 1.dict转成json对象
    js = json.dumps(dic, encode='utf8')
    # 2.json to dict
    dic2 = json.loads(j1, encode='utf8')
    
    # dic写成json文件
    with open('json_doc', 'W', 'utf8') as f:
        json.dump(dic, f, indent=4, ensure_ascii=False) # 分行写入,解决中文乱码
    # 读取json文件
    with open('json_doc','r') as f:
        d3 = json.load(f)

     

    展开全文
  • Python读取文件,读取到的是str类型的内容,如果文件中是一个tuple、list或dict,无法直接使用,需要怎么转化呢? 举个例子: b.txt的内容为[1,2,3] with open("d:\\document\\test\\b.txt") as fp: content = fp....

    Python读取文件,读取到的是str类型的内容,如果文件中是一个tuple、list或dict,无法直接使用,需要怎么转化呢?

    举个例子:
    b.txt的内容为[1,2,3]

    with open("d:\\document\\test\\b.txt") as fp:
        content = fp.read()
        print(content)
        print(type(content))
        content.append(4)
    

    在这里插入图片描述
    读出来是str类型,不能直接调用list的append()方法。
    要转化为对应的python类型,可以使用eval()方法

    with open("d:\\document\\test\\b.txt") as fp:
        content = fp.read()
        print(content)
        print(type(content))
        content = eval(content)
        content.append(4)
        print(content)
        print(type(content))
    

    在这里插入图片描述

    展开全文
  • 想让python按照自己手动排序(时间倒序)读取文件,发现程序并不是按照文件夹里手动排出来的顺序读取的 所以需要提取文件名中的数字来排序(命名很重要!!!) 这里也涉及到了tuple元素的列表排序(lambda!!) ...
  • atuple=(2,3,4,5)#建立一个tuple atuple+=(3,4,6)#相加 type(())#类型为tuple type((9))#类型为int type((9,))#类型为tuple (b,a)=(a,b)#两个tuple互换 4,#输出为(4,) 文件读取 filename="NASA_...
  • Python tuple

    2017-12-28 20:42:00
    tuple类似于list e.g. names = ("Yang", "Jack", "eric", "Yang") 只有两个方法,names.count("Yang") #返回指定元素的个数 2 ... names.index("Jack") #...应用场景:读取指定配置文件,或者当看到tuple时注...
  • 取数时报错TypeError: list indices must be integers or slices, not tuple test_list[1,2] 解决方法 使用numpy构造或是使用另一种方法读取数组 import numpy as np test_list = np.array([[0] * 5 for _ in ...
  • Python基本数据类型-list-tuple-dict-set数据类型表示方法特性list列表用方括号表示:[]list是一种有序的集合,可以随时添加和删除其中的元素。和C++数组的区别就是类型可不同。tuple元组用圆括号表示:()和list相比...
  • 昨天下午在调试接口框架的时候,遇到了一个问题是这样的:使用python 写了一个函数,return 了两个返回值比如 return a,b 于是返回的a,b 是tuple类型,比如值是actual。那么,得到a,b分别是actual[0] ,actual[1]...
  • 参考tuple结构是不可以修改的,也不可以进行append,起初我以为和matlab中的cell 结构相似,结果emmm……首次了解tuple结构,是在np.where()中返回的查询结果进行 type() 类型查看时候发现的。例如:np.where(data_...
  • 然而我们从数据库或文件读取得来的通常是Python内定的类型tuple或list它们的优势就不说了,但是直接把list或tuple构成的二维数组传入scikit是会出问题的.如:DeprecationWarning: Passing 1d arrays as data is ...
  • 读取文件的所有内容 """ f = linecache.getlines('t.txt') """ 用","分割后,掐头去尾,得到要处理的文本信息 """ lines = [x[1:-1].split('","') for x in f] # 拆分   # 1 输出用户总数 """ 将所有...
  • Python陷阱:tuple与Nonetype

    千次阅读 2016-04-11 11:30:44
    1. 慎重使用tuple处理string生成的list 首先我要把从文件里逐行读取的字符串转变为数字列表,正确的是: >>> [float(item) for item in "1e2 to 2".split() if item not in ["to", " "]] [100.0, 2.0]接着读取到某...
  • 参考 【https://blog.csdn.net/qq_33679504/article/details/80516751】【tuple基本知识点】 ... tuple结构是不可以修改的,也不可以进行append,起初我以为和matlab中的 cell 结构相似,结果emmm…… ...
  • Tuple的特性在于,它的元素是不可变的(immutable),一旦设定,就不能使用索引去修改。... t1[0] #按照索引读取Tuple元素 1 >>> u1=t1,(2,3,4,5,6)#tuple可以嵌套 >>> u1 ((1, 2, 3, 4, ...
  • xlrd的xldate_as_tuple

    千次阅读 2019-03-13 23:45:23
    xlrd的xldate_as_tuple方法 方法作用: 在使用xlrd读取Excel表格中的日期格式时,读出的内容和原来Excel表格中的内容不一致。读取出来的是一个浮点数。导致不能正确使用。而xldate_as_tuple方法可以很好地解决这个...
  • 然而我们从数据库或文件读取得来的通常是Python内定的类型tuple或list 它们的优势就不说了,但是直接把list或tuple构成的二维数组传入scikit是会出问题的. 如: DeprecationWarning: Passing 1d arrays as data...
  • 主要介绍了Python数据类型之Tuple元组,结合实例形式分析了Python元组类型的概念、定义、读取、连接、判断等常见操作技巧与相关注意事项,需要的朋友可以参考下
  • 参考tuple结构是不可以修改的,也不可以进行append,起初我以为和matlab中的cell 结构相似,结果emmm……首次了解tuple结构,是在np.where()中返回的查询结果进行 type() 类型查看时候发现的。例如:np.where(data_...
  • 在UDF中经常会读取和返回tuple对象,在单元测试中也会使用tuple做数据准备。tuple内部的数据结构是一个ArrayList,它使用方法有两种:   方法一 Tuple tuple = TupleFactory.getInstance().newTuple(); String ...
  • 元组(tupletuple类型就是元组,用**圆括号( )**表示,不同元素逗号隔开。 ☑一旦初始化赋值,tuple的...☑常用于开发一个常量集,只有读取操作,比较快速方便。 ☑元组里面可以放任何类型的数据。 ☑初始化一...
  • MySQLdb默认查询结果都是返回tuple,输出时候不是很方便,必须按照0,1这样读取,无意中在网上找到简单的修改方法,就是传递一个cursors.DictCursor就行。 默认程序: import MySQLdb db = MySQLdb.connect(host='...
  • 2.1问:元组的定义答:fn main(){ let tuple_sample :(i32,i32,bool) = (12,14,false); println!...元组(tuple读取类似数组,通过下标的形式,用.符号读取。 赋值的时候,需要按照数据类型,按顺...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 665
精华内容 266
关键字:

tuple读取