Network data collection is a vital part in the process of network monitoring, traffic billing, network management and intrusion detection. As a new kind of network architecture, Software Defined Network (SDN) provides a possibility of intelligent and adaptive network data collection with centralized control and programming. However, existing literatures lack a concrete solution to economically collect network data, while satisfying the quality of data processing and analytics. Current data collection methods are not sufficiently adaptive and intelligent in terms of network context awareness. In this paper, we propose an adaptive network data collection system in SDN by automatically selecting proper data collection nodes based on network status in a dynamic way. During data collection, network traffic is sampled by considering flow characteristics in order to effectively reduce the amount of collected data while ensuring the accuracy of later data analysis, e.g., malicious traffic detection. A series of experiments are conducted to test and verify the data collection system and show its advantages through comparison with existing works in terms of CPU/memory consumption, storage usage, flow size recovery, and threat perception.